爬蟲 xpath

一:回顧正則

find、rfind、replace

字符串處理函數(shù)只能處理固定的字符串?baby ?hello

不能處理一類字符串,通過正則表達(dá)式來進(jìn)行處理

正則規(guī)則:

單字符:. [abc] ?\d ?\D ?\w ?\W ?\s ?\S

數(shù)量修飾: * ?+ ?? ?{m} ?{m,} ?{m,n}

邊界修飾?^ ?$ ?\b(詞邊界) ?\B(非詞邊界)

子模式? (.*) ?


貪婪模式

懶惰匹配?.*? ?.+?

修飾模式

re.S ? 單行模式? re.M ? 多行模式? re.I ? 忽略大小寫

二:xpath(參考w3c)

語法:

【注】返回的是一個列表,列表中都是對象,你要記得通過下標(biāo)進(jìn)行篩選

什么是xml ?http://www.w3school.com.cn/xml/

什么是xpath

XPath 使用路徑表達(dá)式在?XML 文檔中進(jìn)行導(dǎo)航

// ?從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置

. ? 選取當(dāng)前節(jié)點(diǎn)

@ ? 選取屬性

打開谷歌瀏覽器,安裝xpath插件,然后使用xpath插件?按?ctrl + shift + x

屬性定位:根據(jù)屬性查找標(biāo)簽

層級定位:一級一級查找

索引定位:【注】下標(biāo)從1開始--網(wǎng)上html

查找id是maincontent的div下面的h1節(jié)點(diǎn)

//div[@id="maincontent"]/h1

//div[@class="head_wrapper"]/div[@id="u"]/a[1]

邏輯運(yùn)算?//div[@id="head" and @class="s_down"]

模糊匹配

查找所有的div,id中有he的div

//div[contains(@id, "he")]

查找所有的div,id中以he開頭的div

//div[starts-with(@id, "he")]

查找所有的div,id中以he結(jié)尾的div

//div[ends-with(@id, "he")]

取文本

//div[@class="head_wrapper"]/div[@id="u"]/a[1]/text()

//div[@class="head_wrapper"]/div[@id="u"]/a[1]

obj.text ? 將內(nèi)容獲取到

取屬性

//div[@class="head_wrapper"]/div[@id="u"]/a[1]/@href

安裝模塊? lxml庫

這個庫是解析html的庫,主要就是解析和提取數(shù)據(jù)

pip切換為國內(nèi)源

http://www.jb51.net/article/98401.htm

pip3 install lxml ?安裝好

【注】pip安裝包的時候,要記得將fiddler關(guān)閉

? *********************************************************************

三:程序中使用xpath

from lxml import etree

d_etree = etree.parse('本地html') ? ?

d_etree = etree.HTML('網(wǎng)上html字符串(也可以是字節(jié)類型)')

d_etree.xpath('xpath路徑') 返回的是一個列表

獲取到節(jié)點(diǎn)對象之后obj obj.xpath('xpath路徑') ?

? ? ? 示例1:抓取站長素材?部分高清圖片

站長素材?http://sc.chinaz.com/

http://sc.chinaz.com/tag_tupian/OuMeiMeiNv.html

http://sc.chinaz.com/tag_tupian/OuMeiMeiNv_2.html

? ? 注意懶加載問題

示例2:?抓取糗事百科-文字【寫入**.json】

https://www.qiushibaike.com/text/?

? ? 注意url的拼接和etree對象的另外用法和除去換行

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

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

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