XPath概述
XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。最初是用来搜寻 XML 文档的,但同样适用于 HTML 文档的搜索。所以在做爬虫时完全可以使用 XPath 做相应的信息抽取。
XPath 的选择功能十分强大,它提供了非常简洁明了的路径选择表达式。另外,它还提供了超过 100 个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有想要定位的节点都可以用 XPath 来选择。
官方文档:https://www.w3.org/TR/xpath/
XPath常用规则
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从当前节点选取直接子节点 |
// | 从当前节点选取子孙节点 |
. | 选取当前节点 |
… | 选取当前节点的父节点 |
@ | 选取属性 |
XPath匹配示例
//title[@lang=‘eng’]
这是一个 XPath 规则,代表的是选择所有名称为 title,同时属性 lang 的值为 eng 的节点,后面会通过 Python 的 lxml 库,利用 XPath 进行 HTML 的解析。
//p//a
筛选p标签下的所有a标签的内容
./a/@title
提取当前节点下a标签中的title属性的值
xpath中extract()使用
items[‘name’]=i.xpath(’./a/@title’)-------------------------------返回一个SelectorList对象
items[‘name’]=i.xpath(’./a/@title’).extract()----------------------返回一个list
items[‘name’]=i.xpath(’./a/@title’).extract_first()---------------返回list中的第一个元素
items[‘name’]=i.xpath(’./a/@title’).get()--------------------------返回list中的第一个元素
items[‘name’]=i.xpath(’./a/@title’).[0].extract()-----------------返回list中的第一个元素(如果list为空抛出异常)