爬虫数据提取 - xpath

介绍

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上,我们也经常使用它来提取网页中的数据。

1、安装XPath谷歌插件

为了方便调试,我们通常会先安装XPath谷歌插件, 下载地址(提取码:0lk9),如果安装时提升“程序包无效”,点这里解决,安装完毕后重启浏览器,点击右上角的小图标,如下表示安装成功
在这里插入图片描述

2、xpath使用

比如我们要提取某个小说站点的书名和作者,通过xpath插件可以直接调试匹配,左边框为匹配规则,右边框为匹配结果,然后可以将得到的匹配规则放到代码运行。//div[@class="bookname"]/a/text()规则含义为在当前class为bookname的div中,获取其下的a标签,然后再从a标签中提取文本信息
在这里插入图片描述

from fake_useragent import UserAgent
import requests
from lxml import etree

# 访问小说站点
url = 'http://www.zongheng.com/category/1.html'
header = {'User-Agent': UserAgent().random}
resp = requests.get(url, headers=header)
e = etree.HTML(resp.text)
# 提取书名
bookNames = e.xpath('//div[@class="bookname"]/a/text()')
# 提取作者
authors = e.xpath('//div[@class="author"]/a/text()')
# 输出书名和作者
for bookName, author in zip(bookNames, authors):
    print(bookName, ":", author)

执行结果

傲世邪神 : 我爱小豆
天道重启 : 三青色
七世神盘 : 莫白1
云雁关山度 : 轻浮你一笑
我在玄界修仙法 : 雨暮浮屠
狂刀镇世 : 剑痴酒徒
冥龙仙尊 : 地狱吃炒面
....

3、常用表达式

表达式说明
/从根节点选取
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.选取当前节点
选取当前节点的父节点
@选取属性
*匹配任何元素节点
@*匹配任何属性节点
node()匹配任何类型的节点
/body/div[1]选取body下的第一个div节点
/body/div[last()]选取body下最后一个div节点
/body/div[last()-1]选取body下倒数第二个节点
/body/div[positon()< 3]选取body下前丙个div节点
/body/div[@class]选取body下带有class属性的div节点
/body/div[@class=“main”]选取body下class属性为main的div节点
/body/div[price>35.00]选取body下price元素大于35的div节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值