Python爬虫-xpath
使用时先安装 lxml 包
节点、元素、属性、内容
xpath 的思想是通过 路径表达 去寻找节点。节点包括元素
,属性
,和内容
元素举例:
html : <html> ...</html>
div : <div> ...</div>
a : <a> ...</a>
路径表达式
/ 根节点,节点分隔符
// 任意位置
. 当前节点
.. 父级节点
@ 属性
通配符
* 任意元素
@* 任意属性
node() 任意子节点(元素,属性,内容)
谓语(使用中括号来限定元素,称为谓语)
//a[n] n为大于零的整数,代表子元素排在第n个位置的<a>元素
//a[last()] last() 代表子元素排在最后个位置的<a>元素
//a[last()-] 和上面同理,代表倒数第二个
//a[position()<3] 位置序号小于3,也就是前两个,这里我们可以看出xpath中的序列是从1开始
//a[@href] 拥有href的<a>元素
//a[@href='www.baidu.com'] href属性值为'www.baidu.com'的<a>元素
//book[@price>2] price值大于2的<book>元素
多个路径
用|
连接两个表达式,可以进行 或
匹配
//book/title | //book/price
函数
xpath内置很多函数。更多函数查看https://www.w3school.com.cn/xpath/xpath_functions.asp
contains(string1,string2)
starts-with(string1,string2)
ends-with(string1,string2) #不支持
upper-case(string) #不支持
text()
last()
position()
node()
#解析html文件 parser = etree.HTMLParser(encoding='utf-8') # html_file= etree.parse('test.html',parser=parser) html_file= etree.parse('test02.html',parser=parser) # data2 = html_file.xpath('//*') # for i in data2: # if hasattr(i,'text'): # print(i.text) #解析带属性a标签的text文本 & 多个路径 | data3 = html_file.xpath('//li/a[@href]/text() | //li/a/@href') for i in data3: print(i)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构