快速掌握Python爬虫XPath语法!

1.什么是 XPath ?

xpath 是一门在 XML 和 HTML 文档中查找信息的语言,可用来在 XML 和 HTML 文档中对元素和属性进行遍历, XPath  通过使用路径表达式来选取  XML  文档中的节点或者节点集。这些路径表达式和在常规的电脑文件系统中看到的表达式非常相似。

2.XPath 语法

想要学好 xpath ,首先要搞明白 html 文档中的节点。

<div> <ul> <li class="item-0"><a href="link1.html">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">fifth item</a> #  注意,此处缺少一个 </li>  闭合标签 </ul> </div>

以上是在网上随便找的一段 html 的文本,可以观察得到, div 的标签下是 ul 标签,而 ul 标签下是 li 标签,于是发现 html 的标签是一级一级如树状的。 Xpath 正是通过这样的方式去寻找。以生活中举例,要确定一个人的位置,首先确定他在中国,然后确定他在某个省份,哪座城市,那个小区,最后找到他。

表达式

描述

Nodename

选取此节点的所有子节点 bookstore 选取bookstore下所有的子节点

/

如果是在最前面,代表从根节点选取。否则选择某节点下的某个节点 /bookstore 选取根元素下所有的bookstore节点

//

从全局节点中选择节点,随便在哪个位置 //book 从全局节点中找到所有的book节点

@

选取某个节点的属性 //book[@price] 选择所有拥有price属性的book节点

.

当前节点

Text()

获取标签中的文本

同级标签可以用li[1],li[2],li[3]的方式获取

3.lxml库

简单介绍一下 lxml 库,接下来会用到它

lxml是 一个 HTML/XML 的解析器,主要的功能是如何解析和提取 HTML/XML  数据。

lxml 和正则一样,也是用 C 实现的,是一款高性能的 PythonHTML/XML 解析器,可以利用之前学习的 XPath 语法,来快速的定位特定元素以及节点信息。 

4.实际案例

随便爬取一个网站,找到找到网站的 html 文本,如下图

要找到 title 和 href ,仔细观察可以得到路径分别是 //div[@id="resultList"]/div[@class="el"]/p/span/a/@title

//div[@id="resultList"]/div[@class="el"]/p/span/a/@href

运行如下:

5.总结

Xpath ,是在爬虫中常见的提取数据的方式之一,相比于正则,它更加简单一些,便于操作, xpath 的难点在于准确的确定数据所在的位置。 

更多实用教程源码案例视频加群:850591259

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值