博文配套视频课程:24小时实现从零到AI人工智能
Xpath简介
XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航,其实HTML就是一种特殊的XML,因此大家在学习XPath时需要了解基本的HTML和XML
- XPath 使用路径表达式在 XML 文档中进行导航
- XPath 包含一个标准函数库
- XPath 是 XSLT 中的主要元素
- XPath是一个 W3C 标准
Xpath语法
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从根节点选取 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 |
. | 选取当前节点 |
… | 选取当前节点的父节点 |
@ | 选取属性 |
Xpath实践
data = """
<div>
<ul>
<li class="item-0"><a>first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html" id='kw'>fifth item</a>
</ul>
</div>
"""
from lxml import etree
# 输出一个标准的HTML格式
html = etree.HTML(data)
print(etree.tostring(html))
# xpath语法: 标签,标签的值,标签的属性
# 从根节点选取
# li_list = html.xpath("/html/body/div/ul/li")
li_list = html.xpath("//li")
print("从匹配选择的当前节点,而不考虑它们的位置")
for li in li_list:
print(li)
print("获取标签的值采用text()函数")
text_list = html.xpath("//li/a/text()")
for text in text_list:
print(text)
print("获取标签的值(根据属性筛选)")
text_list = html.xpath("//li/a[@href='link5.html']/text()")
for text in text_list:
print(text)
print("获取标签的属性,@代表获取属性")
href_list = html.xpath("//li/a/@href")
for href in href_list:
print(href)