Python爬蟲第三天:正則復(fù)習(xí)及Xpath

內(nèi)容簡述:? ? ?? ??? ??

? ??一:正則? ? ? ??

? ??二:Xpath? ? ? ??

一:正則復(fù)習(xí)

?? find、rfind、replace

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

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

正則規(guī)則:

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

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

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

??????? 子模式?(.*)? ???????

????????貪婪模式? ? ?

? ????????????? <div>呵呵<div>哈哈</div>嘿嘿</div>

'

.*

'

懶惰匹配.*?.+?

????????修飾模式

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

? ????【正則復(fù)習(xí)示例】

? ? ? 【正則批量提取圖片鏈接并下載示例-糗事百科圖片】

https://www.qiushibaike.com/pic/page/

二:xpath(參考w3c)

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

什么是xmlhttp://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路徑')?

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

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

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

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

? ? ? ? ?注意懶加載問題

練習(xí): 抓取糗事百科-文字【寫入**.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)容