爬虫笔记8——通过XPath路径解析页面

爬虫通过XPath路径解析页面

首先我们需要了解一下什么是XPath

XPath是在XML文档中查找信息的一种语法,它使用路径表达式来选取XML文档中的节点或者节点集。这里所说的XPath节点包括元素、属性、文本、命名空间、处理指令、注释、根节点等。

路径有绝对路径和相对路径之说:

我们用以下所示的XPath语法获取文档对应的节点,如下所示。

路径表达式结果
name选取 name 元素的所有子节点
/name选取根元素 name。注释:假如路径起始于正斜杠 (/) ,则此路径始终代表到某元素的绝对路径!
/name/ma选取属于 name 的子元素的所有 ma 元素
//ma选取所有 ma 子元素,而不管它们在文档中的位置。
name//ma选择属于 name 元素的后代的所有 ma 元素,而不管它们位于 bookstore 之下的什么位置。
//@aowu选取名为 aowu 的所有属性

在XPath语法中,还可以使用XPath中的谓语,如下所示。

路径表达式结果
/name/ma [1]选取属于name 子元素的第一个 ma 元素
/name/ma [last()]选取属于 name 子元素的最后一个 ma 元素。
/name/ma [last()-1]选取属于 name 子元素的倒数第二个 ma 元素。
/name/ma [position() < 3 ]选取最前面的两个属于 name 元素的子元素的 ma 元素。
//ye[@lang]选取所有拥有名为 ye 的属性的 title 元素。
//ye[@lang=‘eng’]选取所有 ye 元素,且这些元素拥有值为 eng 的 lang 属性
/name/ma[handsome>35.00]选取 name 元素的所有ma元素,且其中的 handsome 元素的值须大于 35.00。
/name/ma[handsome>35.00] /ye选取 name 元素中的 ma 元素的所有 ye 元素,且其中的 handsome 元素的值须大于 35.00

XPath还支持通配符用法,如下所示。

路径表达式结果
/name/*选取 name 元素的所有子元素。
//*选取文档中所有元素。

XPath在爬虫中如何使用

XPath是从xml文件获取元素的查询方法,在爬虫中使用要导入一个三方库lxml

pip install lxml #导入三方库lxml

首先还是要用request获取网页信息,然后用lxml里面的etree模块里有个html的类去获取页面返回一个对象,然后就可以用这个对象使用xpath方法去解析页面。

from lxml import etree
import request

resp = request.get(
	url='url地址'
	header={
		'User-Agent':'BaiduSpider'
	}
)

html = etree.HTML(resp.text)
acquire_lists = html.xpath('xpath路径')
for mess in acquire_lists:
	print(mess)

如果实在不知道XPath路径怎么写,直接就在网页上打开开发者工具然后找到自己需要的模块复制就可以了,如下图:
在这里插入图片描述

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨菲马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值