首页 > Python资料 博客日记
Python从0到100(三十二):lxml模块的学习与应用
2024-06-20 13:00:04Python资料围观101次
学习目标
- 掌握使用lxml库提取数据的方法。
- 理解lxml在数据处理后提取的数据类型。
- 学习将元素(element)转换为字符串的方法。
1. lxml的安装
通过以下命令安装lxml库:
pip install lxml
2. lxml的使用
2.1 基础使用
- 导入lxml的etree库:
from lxml import etree
- 将字符串转换为Element对象,并使用xpath方法提取数据:
html = etree.HTML(text) ret_list = html.xpath("xpath字符串")
- 将Element对象转换为字符串(bytes类型):
etree.tostring(element)
示例
假设有以下HTML内容,我们将对其进行操作:
<div> <ul>
<li class="item-1"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a> <!-- 注意此处缺少闭合标签 -->
</ul> </div>
使用lxml进行操作的代码如下:
from lxml import etree
text = """
<div> <ul> ... </ul> </div> """
html = etree.HTML(text)
print(type(html))
handeled_html_str = etree.tostring(html).decode()
print(handeled_html_str)
输出结果:
<class 'lxml.etree._Element'>
<html><body><div> ... </div> </body></html>
注意:lxml能够补充缺失的标签,但在数据提取时可能遇到问题。使用etree.tostring
方法可以观察lxml处理后的HTML结构。
2.2 进阶练习
假设每个class为item-1
的li
标签代表一条新闻数据,我们将这些数据组成字典。
from lxml import etree
text = """
<div> <ul> ... </ul> </div> """
html = etree.HTML(text)
# 获取所有`li`标签的`href`和标题
href_list = html.xpath("//li[@class='item-1']/a/@href")
title_list = html.xpath("//li[@class='item-1']/a/text()")
# 组装新闻数据
for href in href_list:
item = {"href": href, "title": title_list[href_list.index(href)]}
print(item)
输出结果:
{'href': 'link1.html', 'title': 'first item'}
{'href': 'link2.html', 'title': 'second item'}
{'href': 'link4.html', 'title': 'fourth item'}
2.3 进阶使用
如果提取的是一个节点而非属性或文本,lxml会返回Element对象,可以继续使用xpath方法。
from lxml import etree
text = """
<div> <ul> ... </ul> </div> """
html = etree.HTML(text)
li_list = html.xpath("//li[@class='item-1']")
for li in li_list:
item = {"href": li.xpath("./a/@href")[0] if li.xpath("./a/@href") else None,
"title": li.xpath("./a/text()")[0] if li.xpath("./a/text()") else None}
print(item)
输出结果:
{'href': None, 'title': 'first item'}
{'href': 'link2.html', 'title': 'second item'}
{'href': 'link4.html', 'title': 'fourth item'}
小结
- 安装lxml库:
pip install lxml
- 导入lxml库:
from lxml import etree
- 使用lxml转换和解析HTML:
etree.HTML(text)
- 使用xpath提取数据:
data.xpath("//div/text()")
- 注意lxml提取的数据都是列表类型
- 对于复杂数据,先提取大节点,再遍历小节点进行操作,即先分组再提取数据
通过上述学习,你应该能够使用lxml库进行基本的数据提取和处理。在实际应用中,你可能需要根据具体情况调整xpath表达式以适应不同的数据结构。
好书推荐
《人工智能注意力机制:体系、模型与算法剖析》融合了资深开发工程师多年一线工作经验,从注意力机制这一重要角度入手,阐述注意力机制的产生背景和发展历程,通过详实的理论剖析,以深入浅出的方式着重介绍注意力机制在计算机视觉与自然语言处理两大人工智能方向中的体系、模型与算法,并在最后将注意力机制在其他智能领域的应用加以拓展。内容循序渐进,图文细腻讲解,使读者身临其境,迅速、深入地掌握各种经验和技巧。
内容简介
“注意”作为一切思维活动的起点,一直是哲学、心理学和认知神经科学的重点研究对象。随着计算机技术的发展,人类对注意力机制的模拟和应用成为计算机科学领域的热点研究方向——让计算机能够具有类似人类的注意力机制,使其能够有效地应用于对数据的理解和分析。Transformer模型诞生后,注意力机制在人工智能各大重要领域的研究和应用更是如火如荼,成果丰硕。
《人工智能注意力机制:体系、模型与算法剖析》从注意力机制这一重要角度入手,阐述注意力机制的产生背景和发展历程,通过详实的理论剖析,以深入浅出的方式着重介绍注意力机制在计算机视觉、自然语言处理,以及多模态机器学习三大人工智能方向中的应用思路、模型与算法。
《人工智能注意力机制:体系、模型与算法剖析》以人工智能相关专业研究人员,特别是计算机视觉与自然语言处理等领域的研发人员作为主要读者对象,一方面帮其梳理技术的发展脉络、开拓思路、构建完整的认知体系;另一方面为其剖析算法原理、深刻理解算法细节。本书提供配套源代码,下载方式见封底。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj