零基础学 Python3(18):Xpath 进阶

本文是零基础学 Python3 系列的第18篇,主要讲解XPath的进阶用法,包括文本获取、属性获取、多属性匹配、按顺序选择和节点轴等,帮助读者更有效地从HTML中提取数据。
摘要由CSDN通过智能技术生成

人生苦短,我用 Python

引言

文接上篇,我们接着聊,上篇我们介绍了 Xpath 一些常用的匹配方式, DOM 节点我们可以匹配出来了,这并不是我们的最终目的,我们是要从这些节点中取出来我们想要的数据。本篇我们接着介绍如何使用 Xpath 获取数据。

文本获取

我们先尝试下获取第一篇文章的题目,获取节点中的文本我们可以使用 text() 来进行获取,如图:

image

代码如下:


在学习过程中有什么不懂得可以加我的
python学习扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容

from lxml import etree
import requests

response = requests.get('https://www.geekdigging.com/')
html_str = response.content.decode('UTF-8')
html = etree.HTML(html_str)

result_1 = html.xpath('/html/body/section/div/div/main/article[1]/div[2]/div/h3/a/text()')
print(result_1)

结果如下:

['小白学 Python 爬虫(18):Requests 进阶操作']

哇,上面示例里面的表达式好长啊,这个怎么写出来的,怎么写的稍后再说,先介绍一下这个表达式的意思,仔细看一下,这个表达式其实是从整个 HTML 源代码的最外层的 <html> 标签写起,一层一层的定位到了我们所需要的节点,然后再使用 text() 方法获取了其中的文本内容。

关于这个表达式怎么来的,肯定不是小编写的,这么写讲实话是有点傻,完全没必要从整个文档的最外层开始写。

其实这个是 Chrome 帮我们生成的,具体操作可见下图:

image

这时 Chrome 会自动帮我们把这个节点的表达式 copy 到当前的剪切板上,只需要我们在程序里 ctrl + v 一下。

属性获取

有些情况下,我们可能不止需要节点中的文本数据,可能还会需要节点中的属性数据,比如上面的示例,我们除了想知道文章标题,其实还想知道文章的跳转路径:

result_2 = html.xpath('/html/body/s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值