门户网站 建设 如何写,seo沈阳,德骏网站建设,创建一家网站如何创XPath#xff08;XML Path Language#xff09;是一种用于在XML文档中定位元素的语言。它使用路径表达式来选择节点或节点集#xff0c;类似于文件系统中的路径表达式。
不啰嗦#xff0c;讲究使用#xff0c;直接上案例。
导入
pip3 install lxmlfrom lxml import etr…XPathXML Path Language是一种用于在XML文档中定位元素的语言。它使用路径表达式来选择节点或节点集类似于文件系统中的路径表达式。
不啰嗦讲究使用直接上案例。
导入
pip3 install lxmlfrom lxml import etree
案例样本
xml html langzhheadmeta charsetUTF-8title示例网页/title/headbodyh1欢迎来到我的网站/h1p这是一个简单的HTML页面用于演示XPath解析。/pullia hrefhttps://www.example.com/page1链接1/a/lilia hrefhttps://www.example.com/page2链接2/a/lilia hrefhttps://www.example.com/page3链接3/a/li/uldiv idcontenth2内容标题/h2p这是一段内容。/pp这是另一段内容。/p/div/body/html扫一扫欢迎关注一起学习
基本语法 表达式 描述 / 从根节点选取 // 从匹配选择的当前节点选择文档中的节点而不考虑它们的位置取子孙节点 . 选取当前节点 .. 选取当前节点的父节点 选取属性
tree etree.HTML(html)## 从根节点选取
data1 tree.xpath(/html)
print(从根节点选取:,data1)## 取head下title的值
data2 tree.xpath(/html/head/title/text())
print(取head下title的值:,data2)## 取子孙节点值
data3 tree.xpath(//p/text())
print(取子孙节点值为,data3)## 选取当前节点值
all_p tree.xpath(//p)
for p in all_p:print(选取当前节点,p.xpath(.)) # 获取值话./text()print(选取当前节点父节点,p.xpath(..))## 获取html,lang属性
attr tree.xpath(/html/lang)
print(获取html,lang属性:,attr)## 获取所有href的属性
href tree.xpath(//href)
print(获取所有href的属性:,href)
从根节点选取: [Element html at 0x105346cc0]取head下title的值: [示例网页]取子孙节点值为 [这是一个简单的HTML页面用于演示XPath解析。, 这是一段内容。, 这是另一段内容。]选取当前节点 [Element p at 0x1055d1f40]选取当前节点父节点 [Element body at 0x1055d90c0]选取当前节点 [Element p at 0x1055d9040]选取当前节点父节点 [Element div at 0x1055d90c0]选取当前节点 [Element p at 0x1055d9080]选取当前节点父节点 [Element div at 0x1055d90c0]获取html,lang属性: [zh]获取所有href的属性: [https://www.example.com/page1, https://www.example.com/page2, https://www.example.com/page3] 条件选择基本语法
1. 选取属于ul子元素的第一个li元素的a 值,这里从 1 开始
tree.xpath(/html/body/ul/li[1]/a/text())
2. 选取属于ul子元素的最后一个li元素的a 值
tree.xpath(/html/body/ul/li[last()]/a/text())
3. 选取属于ul子元素的倒数第二个li元素的a 值
tree.xpath(/html/body/ul/li[last()-1]/a/text())
4. 选取所有拥有名为 href 的属性的 a 元素
tree.xpath(//a[href])
5. 选取所有拥有名为 idcontent 的属性的 div 元素
tree.xpath(//div[idcontent])
6. 选取 ul 元素的所有 li 元素且其中的 a 元素的值须为 链接2,如果是数值可以比大小运算
tree.xpath(/html/body/ul/li[a链接2]) 选取属于ul子元素的第一个li元素a值: [链接1]选取属于ul子元素的最后一个li元素a值: [链接3]选取属于ul子元素的最后一个li元素a值: [链接2]选取所有拥有名为 href 的属性的 a 元素: [Element a at 0x1026460c0, Element a at 0x102646140, Element a at 0x1026461c0]选取所有拥有名为 idcontent 的属性的 div 元素: [Element div at 0x102646240]选取 ul 元素的所有 li 元素且其中的 a 元素的值须为 链接2: [链接2]
通配符与运算选择基本语法
1. 选取 html 元素的所有子元素
tree.xpath(/html/*)
2. 选取文档中的所有元素
tree.xpath(//*)
3. 选取所有带有属性的 a 元素
tree.xpath(//a[*])
4. 选取 body 元素的所有 h1 和 p 元素
tree.xpath(//body/h1 | //body/p)
5. 选取文档中的所有 h1 和 p 元素
tree.xpath(//h1 | //p)
选取 html 元素的所有子元素: [Element head at 0x1054de480, Element body at 0x1054de100]选取文档中的所有元素: [Element html at 0x10518ee40, Element head at 0x1054de040, Element meta at 0x1054de440, Element title at 0x1054de180, Element body at 0x1054de4c0, Element h1 at 0x1054de540, Element p at 0x1054de140, Element ul at 0x1054de580, Element li at 0x1054de5c0, Element a at 0x1054de300, Element li at 0x1054de500, Element a at 0x1054de380, Element li at 0x1054de600, Element a at 0x1054de400, Element div at 0x1054de640, Element h2 at 0x1054de680, Element p at 0x1054de200, Element p at 0x1054de240]选取所有带有属性的 a 元素: [Element a at 0x1054de300, Element a at 0x1054de380, Element a at 0x1054de400]选取 body 元素的所有 h1 和 p 元素: [Element h1 at 0x1054de4c0, Element p at 0x1054de140]选取文档中的所有 h1 和 p 元素: [Element h1 at 0x1054de440, Element p at 0x1054de140, Element p at 0x1054de200, Element p at 0x1054de240]