內(nèi)容簡述:? ? ?? ??? ??
? ??一:正則? ? ? ??
? ??二:Xpath? ? ? ??
一:正則復習
?? find翼闽、rfind属提、replace
?? 字符串處理函數(shù)只能處理固定的字符串baby? hello
?? 不能處理一類字符串塔橡,通過正則表達式來進行處理
?? 正則規(guī)則:
??????? 單字符:. [abc]?\d? \D? \w?\W? \s? \S
??????? 數(shù)量修飾:*?+? ?? {m}?{m,}? {m,n}
??????? 邊界修飾^?$? \b(詞邊界)? \B(非詞邊界)
??????? 子模式?(.*)? ???????
????????貪婪模式? ? ?
? ????????????? <div>呵呵<div>哈哈</div>嘿嘿</div>
? ? ????????????????????? ?'<div>.*</div>'
????????懶惰匹配? ? ?????.*?? ? ? .+???
????????修飾模式
?????????????????? re.S??單行模式? re.M?? 多行模式? re.I?? 忽略大小寫
? ????【正則復習示例】
? ? ? 【正則批量提取圖片鏈接并下載示例-糗事百科圖片】
? ???????https://www.qiushibaike.com/pic/page/
二:xpath(參考w3c)
?? 【注】返回的是一個列表点弯,列表中都是對象,記得通過下標進行篩選
????? ????什么是xml? ? ? ? http://www.w3school.com.cn/xml/
????? 什么是xpath
??????? XPath使用路徑表達式在 XML 文檔中進行導航
??????? //?從匹配選擇的當前節(jié)點選擇文檔中的節(jié)點把兔,而不考慮它們的位置
??????? .??選取當前節(jié)點
??????? @??選取屬性
????? 打開谷歌瀏覽器沪伙,安裝xpath插件,然后使用xpath插件按ctrl + shift + x
????? 屬性定位:根據(jù)屬性查找標簽
????? 層級定位:一級一級查找
????? 索引定位:【注】下標從1開始--網(wǎng)上html
?????????? 查找id是maincontent的div下面的h1節(jié)點
??????????????? //div[@id="maincontent"]/h1
??????????????? //div[@class="head_wrapper"]/div[@id="u"]/a[1]
????? 邏輯運算????//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? 安裝好
三:程序中使用xpath
? ? ??from lxml import etree
????? d_etree = etree.parse('本地html')????
????? d_etree = etree.HTML('網(wǎng)上html字符串(也可以是字節(jié)類型)')
????? d_etree.xpath('xpath路徑') 返回的是一個列表
????? 獲取到節(jié)點對象之后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
? ? ? ? ?注意懶加載問題
? ?四:作業(yè)?
? ? ? ? ? ?1-抓取糗事百科-文字【寫入json文件中】
? ??? ? ? ? ? ? ? ?https://www.qiushibaike.com/text/
? ??? ? ? ? ? ? ? ?注意url的拼接和etree對象的另外用法和除去換行
? ? ? ? ? ?2-XAPTH批量提取圖片鏈接并下載示例-糗事百科圖片】