《淺談解析庫XPath,bs4和pyquery》

#?**《淺談解析庫XPath,bs4和pyquery》**??

###?作者:*墨非墨菲非菲*???

前幾天在CSDN看到一篇帖子,題目是“如何讓自己像打王者一樣發(fā)了瘋,拼了命,石樂志的學(xué)習(xí)”。這里面講到了階段性反饋機制,我覺得蠻有意思的,正好前兩天用python寫了一個scrawler爬取了某XXXX軟件上面的挑戰(zhàn)答題并自動匹配。在解析題庫網(wǎng)頁的時候碰到了一系列的問題,把三種解析庫都回顧了個遍。借著這個興奮勁兒,決定碼一篇python解析庫————lxml,bs4,以及pyquery的簡要概述。![某xxxx](https://img-blog.csdnimg.cn/20200401100514534.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2NjgzNzQ0,size_16,color_FFFFFF,t_70)??: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)了出來。![節(jié)點樹](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1585714661896&di=60199f4f824cb632393634936d57e943&imgtype=0&src=http%3A%2F%2Fimg1.imgtn.bdimg.com%2Fit%2Fu%3D137618396%2C3170534982%26fm%3D214%26gp%3D0.jpg)??具體的,構(gòu)成這棵樹的枝節(jié),又包根元素(html),元素(title,body,a...),屬性(class,href...)和文本等等。css,即層疊樣式表,它有一套屬于自己的語法規(guī)則,舉個例子,選擇器(.link)代表了'class=“l(fā)ink”',(#song)代表了'id=“song”',(a)代表了'a'的所有節(jié)點。?![html網(wǎng)頁](https://img-blog.csdnimg.cn/20200401100658276.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2NjgzNzQ0,size_16,color_FFFFFF,t_70)??

有了上面的規(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????

![picture](C:\Users\tingy\Desktop\節(jié)點樹.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實踐。

![](https://img-blog.csdnimg.cn/20200401101928419.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2NjgzNzQ0,size_16,color_FFFFFF,t_60)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容