前言
前面,我们实现了一个最基本的爬虫,但提取页面信息时使用的是正则表达式,这还是比较烦琐,而且万一有地方写错了,可能导致匹配失败,所以使用正则表达式提取页面信息多多少少还是有些不方便。
对于网页的节点来说,它可以定义 id、class 或其他属性。而且节点之间还有层次关系,在网页中可以通过 XPath 或 CSS 选择器来定位一个或多个节点。那么,在页面解析时,利用 XPath 或 CSS 选择器来提取某个节点,然后再调用相应方法获取它的正文内容或者属性,不就可以提取我们想要的任意信息了吗?
在 Python 中,怎样实现这个操作呢?不用担心,这种解析库已经非常多,其中比较强大的库有 lxml、Beautiful Soup、pyquery 等,本章就来介绍这 3 个解析库的用法。有了它们,我们就不用再为正则表达式发愁,而且解析效率也会大大提高。
使用 XPath
XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。它最初是用来搜寻 XML 文档的,但是它同样适用于 HTML 文档的搜索。
所以在做爬虫时,我们完全可以使用 XPath 来做相应的信息抽取。本节中,我们就来介绍 XPath 的基本用法。
1. XPath 概览
XPath 的选择功能十分强大,它提供了非常简洁明了的路径选择表达式。另外,它还提供了超过 100 个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等。几乎所有我们想要定位的节点,都可以用 XPath 来选择。
XPath 于 1999 年 11 月 16 日成