Python 爬虫数据抓取(10):LXML

简介: Python 爬虫数据抓取(10):LXML

引言

它是一个第三方库,专门用于操作XML文件。我们在上一节中已经对XML有了深入的了解。

LXML不仅全面支持XPath查询语言,还提供了一系列便捷的工厂方法,这让它成为处理XML的优选工具。LXML的核心目标是利用其内置的元素树API,简化XML文件的处理过程。

LXML能够轻松读取文件或字符串形式的XML数据,并将它们转换成易于操作的etree元素。

接下来,我们将探讨在进行网页数据抓取时如何有效利用lxml库。

实战

首先,你需要创建一个文件夹,并在其中安装这个库。

>>> mkdir scraper
>>> pip install lxml

完成后,在 scraper 文件夹中创建一个 scraper.py 文件并开始编码。

from lxml import html

import requests

我们导入了 requests 库来请求,因为我们还必须获取该网页的 HTML 数据。

url=”https://en.wikipedia.org/wiki/Outline_of_the_Marvel_Cinematic_Universe”

然后我们将向我们的 URL 发送一个 HTTP 请求。

resp = requests.get(url)
print(resp)

现在,如果您运行它,您将获得 200 个代码,这意味着我们已经成功抓取了目标 URL。

现在,让我们为 HTML 文档创建一个解析树。

tree = html.fromstring(resp.content)

html.fromstring 这个函数能够将你的HTML内容转换成一个树状结构,并返回这个树的根节点。当你打印这个树时,会看到类似于 <Element html at 0x1e18439ff10> 的输出。

这表明我们获取了位于特定内存地址的HTML元素,而我们知道,HTML标签是构成任何HTML文档的基础。

接下来,我打算利用Xpath来查找特定的元素。我们在本文之前的内容中已经介绍过Xpath。我们想要的目标元素的Xpath路径是 //*[@id="mw-content-text"]/div[1]/table[2]/tbody/tr[3]/th/i/a

elements = tree.xpath(//*[@id=”mw-content-text”]/div[1]/table[2]/tbody/tr[3]/th/i/a’)

执行代码后,我们成功匹配并获取了目标元素,它与特定的Xpath相符合。

你将看到这样的输出 <Element a at 0x1eaed41c220>,它表示一个超链接(锚点)标签。从这个标签中,我们有两种方式提取数据。

使用 .text 方法可以获取标签内的文本内容。例如,elements[0].text 会返回文本 "Iron Man"。 使用 .attrib 方法则返回一个包含属性的字典,例如 {'href': '/wiki/Iron_Man_(2008_film)', 'title': 'Iron Man (2008 film)'}。这提供了我们真正需要的 href 属性值,即链接地址。同时,我们还能得到电影的标题信息。 但既然我们只关心 href 属性的值,我们将采用特定的方法来提取它。

elements[0].attrib[‘href’]

执行代码后,我们成功定位了与特定Xpath匹配的元素。

你会得到一个表示为 <Element a at 0x1eaed41c220> 的结果,它代表一个网页中的超链接(锚点)。我们有两种方式来提取这个标签中的数据。

使用 .text 属性可以获取标签内的文本内容,比如 elements[0].text 会输出 "Iron Man"。 使用 .attrib 属性则会返回一个字典,包含如 {'href': '/wiki/Iron_Man_(2008_film)', 'title': 'Iron Man (2008 film)'} 的键值对。这为我们提供了实际所需的 href 属性,也就是链接地址。同时,我们还能得到电影的标题信息。 但因为我们只需要链接地址,所以我们将采取相应的操作来获取它。

elements[0].attrib[‘href’]

这将返回目标链接。这就是我们想要的。

相关文章
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
3月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
2月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
3月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
741 19
|
2月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
2月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
3月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
312 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
340 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
271 103

推荐镜像

更多