GG资源网

Python爬虫之xpath语法及案例使用

Xpath是什么

XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。最初是用来搜寻 XML 文档的,但同样适用于 HTML 文档的搜索。所以在做爬虫时完全可以使用 XPath 做相应的信息抽取。

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

下面介绍实战中常用的几个知识点,详细也可以看W3C介绍:https://www.w3school.com.cn/xpath/index.asp

Xpath语法介绍

路径常用规则

表达式

描述

实例

nodename

选取此节点的所有子节点

xpath('//div')

选取了div节点的所有子节点

/

从根节点选取

xpath('/div')

从根节点上选取div节点

//

选取所有当前节点,不考虑位置

xpath('//div')

选取所有的div节点

.

选取当前节点

xpath('./div')

选取当前节点下的div节点

..

选取当前节点的父节点

xpath('..')

回到上一个节点

@

选取属性

xpath('//@calss')

选取所有的class属性

谓语规则

谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点

表达式

结果

xpath('/body/div[1]')

选取body下的第一个div节点

xpath('/body/div[last()]')

选取body下最后一个div节点

xpath('/body/div[last()-1]')

选取body下倒数第二个div节点

xpath('/body/div[positon()❤️]')

选取body下前两个div节点

xpath('/body/div[@class]')

选取body下带有class属性的div节点

xpath('/body/div[@class="main"]')

选取body下class属性为main的div节点

xpath('/body/div[price>35.00]')

选取body下price元素值大于35的div节点

通配符

通配符来选取未知的XML元素

表达式

结果

xpath('/div/*')

选取div下的所有子节点

xpath('/div[@*]')

选取所有带属性的div节点

取多个路径

使用“|”运算符可以选取多个路径

表达式

结果

xpath('//div|//table')

选取所有的div和table节点

功能函数

使用功能函数能够更好的进行模糊搜索

函数

用法

解释

starts-with

xpath('//div[starts-with(@id,"ma")]')

选取id值以ma开头的div节点

contains

xpath('//div[contains(@id,"ma")]')

选取id值包含ma的div节点

and

xpath('//div[contains(@id,"ma") and contains(@id,"in")]')

选取id值包含ma和in的div节点

text()

xpath('//div[contains(text(),"ma")]')

选取节点文本包含ma的div节点

语法熟悉

下面举一段HTML文本进行语法热身,代码如下

可以看到打印结果已经变成XML元素:

字符串转换HTML

字符串利用etree.HTML解析成html格式:

经过处理可以看到缺失的</li>也自动补全了,还自动添加html、body节点。

查找绝对路径

通过绝对路径获取a标签的所有内容

查找相对路径(常用)

查找所有li标签下的a标签内容

当前标签节点

. 表示选取当前标签的节点。

我们先定位 ul 元素节点得到一个列表,打印当前节点列表得到第一个 ul,
接着打印 ul 节点的子节点 li,text()输出。

父节点

.. 表示选取当前标签的父节点。

可以看到得到ul的上一级div

属性匹配

匹配时可以用@符号进行属性过滤
查找a标签下属性href值为link2.html的内容

函数

last():查找最后一个li标签里的a标签的href属性

contains:查找a标签中属性href包含link的节点,并文本输出

实战案例

上面说完基本用法,接下来做几个实战案例练练手。

案例一:豆瓣读书

案例二:彼岸图片下载

Python爬虫之xpath语法及案例使用

案例三:全国城市名称爬取

xpath使用工具

chrome生成XPath表达式

经常使用chome的朋友都应该知道这功能,在 审查 状态下(快捷键ctrl+shift+i,F12),定位到元素(快捷键ctrl+shift+c) ,在Elements选项卡中,右键元素 Copy->Copy xpath,就能得到该元素的xpath了

Python爬虫之xpath语法及案例使用

Xpath Helper插件

为chome装上XPath Helper就可以很轻松的检验自己的xpath是否正确了。安装插件需要特别上网,安装好插件后,在chrome右上角点插件的图标,调出插件的黑色界面,编辑好xpath表达式,表达式选中的元素被标记为黄色

Python爬虫之xpath语法及案例使用
文章来自
https://www.cnblogs.com/jiba/p/16589856.html
由于网站搬家,部分链接失效,如无法下载,请联系站长!谢谢支持!
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » Python爬虫之xpath语法及案例使用

发表回复

CAPTCHAis initialing...