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代码解读
- 下一篇: xml.etree ElementTre