一步一步学爬虫(3) 页解析之xpath语法

一步一步学爬虫(3) 页解析之xpath语法

  • 3.1 页解析之xpath语法
    • 3.1 .1 xpath概览
    • 3.1.2 xpath常用规则
    • 3.1.3 准备工作
    • 3.1.4 实例引入
    • 3.1.5 所有节点
    • 3.1.6 子节点
    • 3.1.7 父节点
    • 3.1.8 属性匹配
    • 3.1.9 文本获取
    • 3.1.10 属性获取
    • 3.1.11 属性多值匹配
    • 3.1.12 多属性匹配
    • 3.1.13 按序选择
    • 3.1.14 节点轴选择
    • 3.1.15 总结

3.1 页解析之xpath语法

??XPath,全称是 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。它最初是用来搜寻 XML 文档的,但是它同样适用于 HTML 文档的搜索。

??所以在做爬虫时,我们完全可以使用 XPath 来做相应的信息抽取。本节我们就来了解下 XPath 的基本用法。

3.1 .1 xpath概览

??XPath 的选择功能十分强大,它提供了非常简洁明了的路径选择表达式。另外,它还提供了超过 100 个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等。几乎所有我们想要定位的节点,都可以用 XPath 来选择。

??XPath 于 1999 年 11 月 16 日成为 W3C 标准,它被设计为供 XSLT、XPointer 以及其他 XML 解析软件使用,更多的文档可以访问其官方 站:https://www.w3.org/TR/xpath/。

3.1.2 xpath常用规则

  • 表 XPath 常用规则
表 达 式 描  述
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
  • 以上列出了 XPath 的常用匹配规则,示例如下:

    ??这就是一个 XPath 规则,它代表选择所有名称为 title,同时属性 lang 的值为 eng 的节点。后面会通过 Python 的 lxml 库,利用 XPath 进行 HTML 的解析。

3.1.3 准备工作

??使用之前,首先要确保安装好 lxml 库。如尚未安装,可以使用 pip3 来安装:
??

3.1.4 实例引入

??现在通过实例来感受一下使用 XPath 对 页进行解析的过程,相关代码如下:

??这里首先导入 lxml 库的 etree 模块,然后声明了一段 HTML 文本,调用 HTML 类进行初始化,这样就成功构造了一个 XPath 解析对象。这里需要注意的是,HTML 文本中的最后一个 li 节点是没有闭合的,但是 etree 模块可以自动修正 HTML 文本。
??这里我们调用 tostring 方法即可输出修正后的 HTML 代码,但是结果是 bytes 类型。这里利用 decode 方法将其转成 str 类型,结果如下:

??其中 test.html 的内容就是上面例子中的 HTML 代码,内容如下:

??这次的输出结果略有不同,多了一个 DOCTYPE 声明,不过对解析无任何影响,结果如下:

3.1.5 所有节点

??我们一般会用 // 开头的 XPath 规则来选取所有符合要求的节点。这里以前面的 HTML 文本为例,如果要选取所有节点,可以这样实现:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年11月22日
下一篇 2022年11月22日

相关推荐

tml>