xpath学习
xpath學習
parsel包
該包主要用來將請求后的字符串格式解析成re,xpath,css進行內容的匹配,主要是對XML和HTML等進行分析。
xpath語法
/ #根節點或節點間的過渡 // #跨越節點獲取節點 . #選取當前節點 .. #當前節點的父節點 @ #選取屬性 text() #選取文本 [index] #根據index獲取第index個標簽(index從1開始) [@Classname] #根據屬性名獲取標簽 contains(p,content) #模糊查詢(p定位,content匹配字段)一些語法示例
#根節點下的html的標簽中的body標簽中的div標簽中的div標簽 /html/body/div/div #獲取所以a標簽 //a#獲取html的標簽中的body標簽中的所有a標簽(可以跨越節點,不必一定是子節點) /html/body//a#在當前節點下的a標簽 ./a#當前節點的父標簽中的a標簽 ../a#根節點下的html的標簽中的body標簽中的a標簽中的class屬性 /html/body/a/@class#li便簽下的第3個li標簽 //li[3]#通過屬性定位 //a[@href=""]#html的標簽中的body標簽中的a標簽中的文本內容 /html/body/a/text()#獲取a標簽,并且屬性name中有字段"myname" //a[contains(@name,"myname")]一些官方例子:
假設有HTMLcode
<html><head><base href='http://example.com/' /><title>Example website</title></head><body><div id='images'><a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a><a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a><a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a><a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a><a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a></div></body> </html>那么我們可以這樣創建選擇器selector。selector支持解析css,xpath,re語法等。
>>> import requests >>> from parsel import Selector >>> url = 'https://parsel.readthedocs.org/en/latest/_static/selectors-sample1.html' >>> text = requests.get(url).text #獲取網頁的str文本 >>> selector = Selector(text=text) #解析字符串獲取解析器進行xpath解析
#我們可以通過selector.xpath(xpath)方法進行xpath解析,返回解析器 #使用getall()和get()獲取文本信息 #使用extract()獲取信息和getall()一樣#這里放回的是解析結果 >>> selector.xpath('//title/text()') [<Selector xpath='//title/text()' data='Example website'>]#獲取所有解析的文本的列表 >>> selector.xpath('//title/text()').getall() ['Example website']#獲取第一個解析的文本 >>> selector.xpath('//title/text()').get() 'Example website'#同.getall() >>> selector.xpath('//title/text()').extract() ['Example website']其他例子:
import parsel html_str='''<html><head><base href='http://example.com/' /><title>Example website</title></head><body><div id='images'><a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a><a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a><a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a><a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a><a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a></div></body> </html> ''' selector = parsel.Selector(html_str) print(selector) print(type(selector)) selectorList = selector.xpath('/html/head/title/text()') print(selectorList) print(type(selectorList)) result = selectorList.extract() print(result) print(type(result)) result2 = selectorList.getall() print(result2) print(type(result2)) result3 = selectorList.extract_first() print(result3) print(type(result3)) result4 = selectorList.extract_first() print(result4) print(type(result4))總結
- 上一篇: im2rec.py代码解读
- 下一篇: OPPO 与哈苏联合打造 2024 新一