Python爬虫——Python lxml库的安装和使用

阅读: 评论:0

Python爬虫——Python lxml库的安装和使用

Python爬虫——Python lxml库的安装和使用

lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 Xpath 表达式提供了良好的支持,因此能够了高效地解析 HTML/XML 文档。这里讲解如何通过 lxml 库解析 HTML 文档。

安装lxml库

lxml 属于 Python 第三方库,因此需要使用如下方法安装:

pip3 install lxml

在 CMD 命令行验证是否安装成功。若引入模块,不返回错误则说明安装成功。

>>> import lxml
>>>

lxml使用流程

lxml 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面我们简单介绍一下 lxml 库的使用流程,如下所示:

1) 导入模块

from lxml import etree

2) 创建解析对象

调用 etree 模块的 HTML() 方法来创建 HTML 解析对象。如下所示:

parse_html = etree.HTML(html)

HTML() 方法能够将 HTML 标签字符串解析为 HTML 文件,该方法可以自动修正 HTML 文本。示例如下:

from lxml import etree
html_str = '''
<div><ul><li class="item1"><a href="link1.html">Python</a></li><li class="item2"><a href="link2.html">Java</a></li><li class="site1"><a href="www.CSDN">CSDN</a><li class="site2"><a href="www.baidu">百度</a></li><li class="site3"><a href="www.jd">京东</a></li></ul>
</div>
'''
html = etree.HTML(html_str)
# tostring()将标签元素转换为字符串输出,注意:result为字节类型
result = string(html)
print(result.decode('utf-8'))

输出结果如下:

<html><body><div><ul><li class="item1"><a href="link1.html">Python</a></li><li class="item2"><a href="link2.html">Java</a></li><li class="site1"><a href="www.CSDN">C&#35821;&#35328;&#20013;&#25991;&#32593;</a></li><li class="site2"><a href="www.baidu">&#30334;&#24230;</a></li><li class="site3"><a href="www.jd">&#20140;&#19996;</a></li></ul>
</div>
</body></html>

上述 HTML 字符串存在缺少标签的情况,比如“C语言中文网”缺少一个 </li> 闭合标签,当使用了 HTML() 方法后,会将其自动转换为符合规范的 HTML 文档格式。

3) 调用xpath表达式

最后使用第二步创建的解析对象调用 xpath() 方法,完成数据的提取,如下所示:

r_list = parse_html.xpath('xpath表达式')

lxml库数据提取

下面通过一段 HTML 代码实例演示如何使用 lxml 库提取想要的数据。HTML 代码如下所示:

<div class="wrapper"><a href="www.CSDN/product/" id="site">website product</a><ul id="sitename"><li><a href="/" title="CSDN">编程</a></li><li><a href="/" title="新浪娱乐">微博</a></li><li><a href="" title="百度">百度贴吧</a></li><li><a href="" title="淘宝">天猫淘宝</a></li><li><a href="/" title="京东">京东购物</a></li><li><a href="/" title="CSDN">CSDN</a></li><li><a href="" title="360科技">安全卫士</a></li><li><a href="/" title=字节">视频娱乐</a></li><li><a href="/" title="b站">年轻娱乐</a></li><li><a href="/" title="浏览器">搜索引擎</a></li></ul>
</div>

1) 提取所有a标签内的文本信息

from lxml import etree
# 创建解析对象
parse_html=etree.HTML(html)
# 书写xpath表达式,提取文本最终使用text()
xpath_bds='//a/text()'
# 提取文本数据,以列表形式输出
r_list=parse_html.xpath(xpath_bds)
# 打印数据列表
print(r_list)

输出结果:

['website product', '编程', '微博', '百度贴吧', '天猫淘宝', '京东购物', 'CSDN', '安全卫士', '视频娱乐', '年轻娱乐', '搜索引擎']

2) 获取所有href的属性值

from lxml import etree
# 创建解析对象
parse_html=etree.HTML(html)
# 书写xpath表达式,提取文本最终使用text()
xpath_bds='//a/@href'
# 提取文本数据,以列表形式输出
r_list=parse_html.xpath(xpath_bds)
# 打印数据列表
print(r_list)

输出结果:

['/', '/', '/', '', '', '/', '/', '', '/', '/', '/']

3) 不匹配href=" www.biancheng/priduct"

from lxml import etree
# 创建解析对象
parse_html=etree.HTML(html)
# 书写xpath表达式,提取文本最终使用text()
xpath_bds='//a/@href'
# 提取文本数据,以列表形式输出
xpath_bds='//ul[@id="sitename"]/li/a/@href'
# 打印数据列表
print(r_list)

输出结果:

['/', '/', '', '', '/', '/', '', '/', '/', '/']

Python教程,8天python从入门到精通,学python看这套就够了

本文发布于:2024-03-09 11:48:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1710233744135657.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:爬虫   Python   lxml
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23