Python---12.数据解析之XPath
·
XPath:是一种用于在XML或HTML文档中定位元素的语言。XPath使用路径表达式来选取节点或节点集。在python中,可以使用lxml库来解析。
XPath解析,只适用于数据在网页源码(document请求)中;如果数据是json格式,或网页源码中没有数据,则无法使用XPath。
- 语法:
- / : 从根节点开始选择。
- //:选择匹配选择的任何位置的节点。
- . : 选择当前节点。
- .. : 当前节点的父节点
- @ : 选择属性
str =""" <div> <ul> <li class="item-0"><a href="link1.html"text="shadjfhjisdf">first item</a></li> <li class="item-1"><a href="link2.html">second item</a></li> <li class="item-inactive"><a href="link3.html"><span class="bold">third item</span></a></li> <li class="item-1"><a href="link4.html" class="test">fourth item</a></li> <li aaa="余安" class="item-0"><a class="test" href="link5.html">fifth item</a></li> </ul> </div> """ from lxml import etree tree = etree.HTML(str) print(tree.xpath('//li')) # 返回Element对象 print(tree.xpath('//li/@class')) # 匹配所有li的class属性值 print(tree.xpath('//li/@aaa')) # 匹配所有li的aaa属性值 print(tree.xpath('//li//a')) # 匹配所有的a标签 print(tree.xpath('//li/a')) # 匹配所有的a标签 print(tree.xpath('//a')) # 匹配所有的a标签 print(tree.xpath('//ul/li/a')) # 匹配 ul下li下的a标签 print(tree.xpath('//li/a[@href="link4.html"]')) # 匹配 href="link4.html"的a标签 print(tree.xpath('//li/a[@class="test"]')) print(tree.xpath('//span')) print(tree.xpath('//a/span')) print(tree.xpath('//li//span')) # 获取子元素 多层用 print(tree.xpath('//li/a//@class')) # li下的a标签自己和之下所有的class属性值 print(tree.xpath('//li/a/@class')) # li下的a标签的class属性值 print(tree.xpath('//li/a[@href="link5.html"]/text()')) # text() 获取内容 print(tree.xpath('//li[last()]/a/@href')) # last()最后一个 ['link5.html'] print(tree.xpath('//li[last()-1]/a/@href')) # last()-1 倒数第二 ['link4.html'] print(tree.xpath('//li[1]/a/@href')) # xpath里面 索引从1开始 ['link1.html'] print(tree.xpath('//*[@class="bold"]')) # * 表示所有任意 通配符
更多推荐
所有评论(0)