【4.0】爬虫之xpath
【xpath解析】
-
xpath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但xpath明显比re具有优势,在网页分析上使re退居二线。
-
xpath 全称为XML Path Language 一种小型的查询语言
xpath的优点:-
可在XML中查找信息
-
支持HTML的查找
-
通过元素和属性进行导航
-
-
python开发使用XPath条件: 由于XPath属于lxml库模块,所以首先要安装库lxml。
【一】路径表达式
表达式 | 描述 | 实例 | 解析 |
---|---|---|---|
/ | 从根节点选取 | /body/div[1] |
选取根结点下的body下的第一个div标签 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 | //a |
选取文档中所有的a标签 |
./ | 当前节点再次进行xpath | ./a |
选取当前节点下的所有a标签 |
@ | 选取属性 | //@calss |
选取所有的class属性 |
【二】谓语(Predicates)
-
谓语用来查找某个特定的节点或者包含某个指定的值的节点。
-
谓语被嵌在方括号中。
-
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
路径表达式 | 结果 |
---|---|
/ul/li[1] | 选取属于 ul子元素的第一个 li元素。 |
/ul/li[last()] | 选取属于 ul子元素的最后一个 li元素。 |
/ul/li[last()-1] | 选取属于 ul子元素的倒数第二个 li元素。 |
//ul/li[position()❤️] | 选取最前面的两个属于 ul元素的子元素的 li元素。 |
//a[@title] | 选取所有拥有名为 title的属性的 a元素。 |
//a[@title='xx'] | 选取所有 a元素,且这些元素拥有值为 xx的 title属性。 |
//a[@title>10] > < >= <= != |
选取 a元素的所有 title元素,且其中的 title元素的值须大于 10。 |
/body/div[@price>35.00] | 选取body下price元素值大于35的div节点 |
【三】选取未知节点
- XPath 通配符可用来选取未知的 XML 元素。
通配符 | 描述 |
---|---|
* | 匹配任何元素节点。 |
@* | 匹配任何属性节点。 |
node() | 匹配任何类型的节点。 |
实例
- 在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
路径表达式 | 结果 |
---|---|
/ul/* | 选取 bookstore 元素的所有子元素。 |
//* | 选取文档中的所有元素。 |
//title[@*] | 选取所有带有属性的 title 元素。 |
//node() | 获取所有节点 |
【四】选取若干路径
- 通过在路径表达式中使用“|”运算符,您可以选取若干个路径。
实例
- 在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
路径表达式 | 结果 |
---|---|
//book/title | //book/price | 选取 book 元素的所有 title 和 price 元素。 |
//title | //price | 选取文档中的所有 title 和 price 元素。 |
/bookstore/book/title | //price | 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。 |
- 逻辑运算
- 属性查询
- 获取第几个标签 索引从1开始
- 模糊查询
【五】示例
【案例】豆瓣Top250基于xpath解析
__EOF__

本文作者:Chimengmeng
本文链接:https://www.cnblogs.com/dream-ze/p/17647605.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/dream-ze/p/17647605.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17647605.html
分类:
Python全栈开发二期
, Python爬虫
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)