前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“干将莫邪” —— Xpath 与 lxml 库

“干将莫邪” —— Xpath 与 lxml 库

作者头像
猴哥yuri
发布2018-08-16 15:55:04
8550
发布2018-08-16 15:55:04
举报
文章被收录于专栏:极客猴极客猴极客猴

前面的文章,我们已经学会正则表达式以及 BeautifulSoup库的用法。我们领教了正则表达式的便捷,感受 beautifulSoup 的高效。本文介绍也是内容提取的工具 —— Xpath,它一般和 lxml 库搭配使用。所以,我称这两者为“干将莫邪”。

1 Xpath 和 lxml

  • Xpath

XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath 基于 XML 的树状结构,提供在数据结构树中找寻节点的能力。

Xpath 原本是用于选取 XML 文档节点信息。XPath 是于 1999 年 11 月 16 日 成为 W3C 标准。因其既简单方便又容易,所以它逐渐被人说熟知。

  • lxml

lxml 是功能丰富又简单易用的,专门处理 XML 和 HTML 的 Python 官网标准库。

2 Xpath 的语法

正则表达式的枯燥无味又学习成本高,Xpath 可以说是不及其万分之一。所以只要花上 10 分钟,掌握 Xpath 不在话下。Xpath 的语言以及如何从 HTML dom 树中提取信息,我将其归纳为“主干 - 树支 - 绿叶”。

2.1 “主干” —— 选取节点

抓取信息,我们需知道要从哪里开始抓取。因此,需要找个起始节点。Xpath 选择起始节点有以下可选:

我们通过以下实例来了解其用法:

如果你对于提取节点没有头绪的时候,可以使用通配符来暂时替代。等查看输出内容之后再进一步确认。

2.2 “分支” —— 关系节点与谓语

这一步的过程其实是通过起点一步步来寻找最终包含我们所需内容的节点。我们有时需要使用到相邻节点信息。因此,我们需要了解关系节点或者谓语。

  • 关系节点

一般而言,DOM 树中一个普通节点具有父节点、兄弟节点、子节点。当然也有例外的情况。这些有些节点比较特殊,可能没有父节点,如根节点;也有可能是没有子节点,如深度最大的节点。Xpath 也是有支持获取关系节点的语法。

  • 谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点。同时,它是被嵌在方括号中的。

2.3”绿叶” —— 节点内容以及属性

到了这一步,我们已经找到所需内容的节点了。接下来就是获取该节点中的内容了。Xpath 语法提供了提供节点的文本内容以及属性内容的功能。

具体用法见以下实例:

3 lxml 的用法

3.1 安装 lxml

pip 是安装库文件的最简便的方法,具体命令如下:

3.2 使用 lxml

lxml 使用起来是比较简单的。我们首先要使用 lxml 的 etree 将 html 页面进行初始化,然后丢给 Xpath 匹配即可。具体用法如下:

没错,就这短短几行代码即可完成信息提取。 值得注意的是:xpath 查找匹配返回的类型有可能是一个值,也有可能是一个存放多个值的列表。这个取决于你的路径表达式是如何编写的。

上文:应该如何阅读?

作者:猴哥,公众号:极客猴。爱好读书,喜欢钻研技术,梦想成为文艺青年的IT Boy。

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客猴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Xpath 和 lxml
  • 2 Xpath 的语法
    • 2.1 “主干” —— 选取节点
      • 2.2 “分支” —— 关系节点与谓语
        • 2.3”绿叶” —— 节点内容以及属性
        • 3 lxml 的用法
          • 3.1 安装 lxml
            • 3.2 使用 lxml
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档