#?**《淺談解析庫XPath,bs4和pyquery》**??
###?作者:*墨非墨菲非菲*???
前幾天在CSDN看到一篇帖子,題目是“如何讓自己像打王者一樣發(fā)了瘋,拼了命,石樂志的學(xué)習(xí)”。這里面講到了階段性反饋機制,我覺得蠻有意思的,正好前兩天用python寫了一個scrawler爬取了某XXXX軟件上面的挑戰(zhàn)答題并自動匹配。在解析題庫網(wǎng)頁的時候碰到了一系列的問題,把三種解析庫都回顧了個遍。借著這個興奮勁兒,決定碼一篇python解析庫————lxml,bs4,以及pyquery的簡要概述。??:happy:??
下面僅僅是我個人的回憶和記錄,僅供參考,錯誤之處還請多多指正。
##?**寫在前面**??
以上提到的三個是python語言中最最最常用的三個解析庫,解析庫是用來提取網(wǎng)頁的html信息的。首先要解釋一下,網(wǎng)頁中如此多的信息,為什么能夠被精準(zhǔn)的獲取到。網(wǎng)頁可以分為三大部分————HTML,JavaScrip和CSS,這些要素構(gòu)成了我們看到的豐富多彩的網(wǎng)頁。??
解析庫基于網(wǎng)頁的兩類特征,一類是節(jié)點樹(HTML?DOM),一類是css選擇器。如果把節(jié)點樹比作一個家庭,那么它就包含了它爺爺,它老漢(parent),它兄弟(sibling)以及它兒子和孫孫(children)。有了這個節(jié)點樹,網(wǎng)頁里面每一個元素就層級分明的展現(xiàn)了出來。??具體的,構(gòu)成這棵樹的枝節(jié),又包根元素(html),元素(title,body,a...),屬性(class,href...)和文本等等。css,即層疊樣式表,它有一套屬于自己的語法規(guī)則,舉個例子,選擇器(.link)代表了'class=“l(fā)ink”',(#song)代表了'id=“song”',(a)代表了'a'的所有節(jié)點。???
有了上面的規(guī)則,每個元素的位置就被唯一確定了下來了,接下來解析庫就登上了舞臺,使出了元哥般的秀發(fā)。??
>下面是分割線???
---
##?**【解析庫一:XPath】**??
XPath,全名是XML?Path?Lauguage。拿到一個庫,如果有精力和毅力閱讀官方文檔當(dāng)然最好,雖然我?guī)缀鯖]有過。知道名字,好像意義不大,所以,直接上干貨。
###?1.初始化??
先說說初始化(initition),可被解析的有字符串(string)和html文件(filename.html)。具體的使用方法:??
~~首先要安裝lxml庫,python?CMD:pip?install?lxml~~??
```python??
res?=?'''???<div?class="info">
????????<div?class="hd">
????????????<a????
點樹.jpg)
##?寫在最后
從2020/03/31?15:20開始,到04/01?09:59,這一篇文章已經(jīng)算是圓滿了。再次感謝我媽和我的芬芬兒昨天晚上幫我洗碗,我才能夠比較順利的,時效的完成這篇梳理。
##??引用
[1]崔慶才,Python3網(wǎng)絡(luò)開發(fā)與實踐,[M],2018.4,人民郵電出版社。??
[2]URL:https://docs.python.org/zh-cn/3.7/??[點擊閱讀python官方文檔](https://docs.python.org/zh-cn/3.7/)。??
[3]python3?lxml標(biāo)準(zhǔn)庫[點擊閱讀lxml文檔](http://lxml.de/)。???
[4]沈承放,莫達隆,beautifulsoup庫在網(wǎng)絡(luò)爬蟲中的使用技巧及應(yīng)用,[J],2019.3,2019(28)[點擊閱讀paper](https://login.cnki.net/login/?platform=kdoc&ForceReLogin=1&ReturnUrl=%2f%2fkns.cnki.net%2fKXReader%2fDetail%3fdbcode%3dCJFQ%26filename%3dDNZS201928007%26uid%3d)。??
[5]風(fēng)變編程——BeautifulSoup實踐。
