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 文本。示例如下:

  1. from lxml import etree
  2. html_str = ‘’’
  3. Python
  4. Java
  5. C语言中文网
  6. 百度
  7. 京东
  8. ‘’’
  9. html = etree.HTML(html_str)
  10. tostring()将标签元素转换为字符串输出,注意:result为字节类型

  11. result = etree.tostring(html)
  12. print(result.decode(‘utf-8’))

输出结果如下:

  1. Python
  2. Java
  3. C语言中文网
  4. 百度
  5. 京东

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

3) 调用xpath表达式

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

**

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

lxml库数据提取

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

  1. website product
  2. 编程
  3. 微博
  4. 百度贴吧
  5. 天猫淘宝
  6. 京东购物
  7. 编程
  8. 安全卫士
  9. 视频娱乐
  10. 年轻娱乐
  11. 搜索引擎

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

  1. from lxml import etree
  2. 创建解析对象

  3. parse_html=etree.HTML(html)
  4. 书写xpath表达式,提取文本最终使用text()

  5. xpath_bds=‘//a/text()’
  6. 提取文本数据,以列表形式输出

  7. r_list=parse_html.xpath(xpath_bds)
  8. 打印数据列表

  9. print(r_list)

输出结果:

**

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

2) 获取所有href的属性值

  1. from lxml import etree
  2. 创建解析对象

  3. parse_html=etree.HTML(html)
  4. 书写xpath表达式,提取文本最终使用text()

  5. xpath_bds=‘//a/@href’
  6. 提取文本数据,以列表形式输出

  7. r_list=parse_html.xpath(xpath_bds)
  8. 打印数据列表

  9. print(r_list)

输出结果:

**

['http://www.biancheng.net/product/', 'http://www.biancheng.net/', 'http://world.sina.com/', 'http://www.baidu.com', 'http://www.taobao.com', 'http://www.jd.com/', 'http://c.bianchneg.net/', 'http://www.360.com', 'http://www.bytesjump.com/', 'http://bzhan.com/', 'http://hao123.com/']

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

  1. from lxml import etree
  2. 创建解析对象

  3. parse_html=etree.HTML(html)
  4. 书写xpath表达式,提取文本最终使用text()

  5. xpath_bds=‘//a/@href’
  6. 提取文本数据,以列表形式输出

  7. xpath_bds=‘//ul[@id=“sitename”]/li/a/@href’
  8. 打印数据列表

  9. print(r_list)

输出结果:

零基础Python学习资源介绍

👉Python学习路线汇总👈

温馨提示:篇幅有限,已打包文件夹获取方式在:点击这里【 Python全套资料】 即可获取。

Python lxml库的安装和使用

👉Python必备开发工具👈

Python lxml库的安装和使用

温馨提示:篇幅有限,已打包文件夹获取方式在:点击这里【 Python全套资料】 即可获取。

👉Python学习视频600合集👈

Python lxml库的安装和使用
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉实战案例👈

Python lxml库的安装和使用

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉100道Python练习题👈检查学习结果。

Python lxml库的安装和使用

👉面试刷题👈

Python lxml库的安装和使用

温馨提示:篇幅有限,已打包文件夹获取方式在:点击这里【 Python全套资料】 即可获取。

发表回复