人生苦短,我用 Python
引言
文接上篇,我们接着聊,上篇我们介绍了 Xpath 一些常用的匹配方式, DOM 节点我们可以匹配出来了,这并不是我们的最终目的,我们是要从这些节点中取出来我们想要的数据。本篇我们接着介绍如何使用 Xpath 获取数据。
文本获取
我们先尝试下获取第一篇文章的题目,获取节点中的文本我们可以使用 text()
来进行获取,如图:
代码如下:
在学习过程中有什么不懂得可以加我的
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 帮我们生成的,具体操作可见下图:
这时 Chrome 会自动帮我们把这个节点的表达式 copy 到当前的剪切板上,只需要我们在程序里 ctrl + v
一下。
属性获取
有些情况下,我们可能不止需要节点中的文本数据,可能还会需要节点中的属性数据,比如上面的示例,我们除了想知道文章标题,其实还想知道文章的跳转路径:
result_2 = html.xpath('/html/body/s