如何详细学习Python中lxml库的文档解析技巧?

2026-04-30 14:442阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计983个文字,预计阅读时间需要4分钟。

如何详细学习Python中lxml库的文档解析技巧?

目录

1.lxml库简介

2.lxml库方法介绍

3.代码实例

1. lxml库简介

lxml是Python常用的文档解析库,能够高效地解析HTML、XML等文档。

2. lxml库方法介绍- 解析文档- 查询文档- 修改文档

3. 代码实例pythonfrom lxml import etree

解析HTML文档=etree.HTML('这是一个示例')print(.xpath('//body/text()'))

目录
  • 1.lxml库简介
  • 2.lxml库方法介绍
  • 3.代码实例

1.lxml库简介

lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python 爬虫。

lxml 为第三方库,需要我们通过pip命令安装:

pip install lxml

如何详细学习Python中lxml库的文档解析技巧?

2.lxml库方法介绍

lxml 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,让我们先导入模块:

from lxml import etree

使用 etree 模块的 HTML() 方法可以创建 HTML 解析对象:

from lxml import etree parse_html = etree.HTML(html)

HTML() 方法能够将 HTML 标签字符串解析为 HTML 文件,并且可以自动修正 HTML 文本:

from lxml import etree html_str = ''' <div> <ul> <li><a href="www.python.org">Python</a></li> <li><a href="www.java.com">Java</a> <li><a href="www.csdn.net">CSDN</a></li> </ul> </div> ''' html = etree.HTML(html_str) # tostring()将标签元素转换为字符串输出,注意:result为字节类型 result = etree.tostring(html) print(result.decode('utf-8'))

上述代码我故意在Java那一行少写一个</li>,可以看到输出会自动补全:

<html><body><div> <ul> <li><a href="www.python.org">Python</a></li> <li><a href="www.java.com">Java</a></li> <li><a href="www.csdn.net">CSDN</a></li> </ul> </div> </body></html>

解析为 HTML 文件后,我们可以使用 xpath() 方法来提取我们需要的数据了:

from lxml import etree html_str = ''' <div> <ul> <li><a href="www.python.org">Python</a></li> <li><a href="www.java.com">Java</a></li> <li><a href="www.csdn.net">CSDN</a></li> </ul> </div> ''' html=etree.HTML(html_str) xpath_bds='//@href' r_list = html.xpath(xpath_bds) print(r_list)

xpath() 方法使用一个 XPath 表达式作为参数,上面那段程序提取出了页面里的所有网址。

详细的 XPath 表达式语法,请参见菜鸟教程:
www.runoob.com/xpath/xpath-syntax.html

3.代码实例

lxml 库在爬虫中的使用大概就是这么多了,接下让我们结合前一篇文章(Python 网页请求:requests库的使用),来写一个普通的爬虫程序吧:

import os import sys import requests from lxml import etree x = requests.get('www.csdn.net/') html = etree.HTML(x.text) xpath_bds = '//img/@src' img_list = html.xpath(xpath_bds) # 创建img文件夹 os.chdir(os.path.dirname(sys.argv[0])) if not os.path.exists('img'): os.mkdir('img') print('创建文件夹成功') else: print('文件夹已存在') # 下载图片 for i in range(len(img_list)): img = requests.get(img_list[i]).content if img_list[i].endswith('.jpg'): with open(f'./img/{i}.jpg', 'wb') as f: f.write(img) elif img_list[i].endswith('.jpeg'): with open(f'./img/{i}.jpeg', 'wb') as f: f.write(img) elif img_list[i].endswith('.png'): with open(f'./img/{i}.png', 'wb') as f: f.write(img) else: print(f'第{i + 1}张图片格式不正确') continue print(f'第{i + 1}张图片下载成功')

这个爬虫程序爬取了CSDN首页的所有.jpg.jpeg.png格式的图片,快来自己尝试一下吧!

到此这篇关于Python文档解析lxml库的使用的文章就介绍到这了,更多相关Pythonlxml库内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计983个文字,预计阅读时间需要4分钟。

如何详细学习Python中lxml库的文档解析技巧?

目录

1.lxml库简介

2.lxml库方法介绍

3.代码实例

1. lxml库简介

lxml是Python常用的文档解析库,能够高效地解析HTML、XML等文档。

2. lxml库方法介绍- 解析文档- 查询文档- 修改文档

3. 代码实例pythonfrom lxml import etree

解析HTML文档=etree.HTML('这是一个示例')print(.xpath('//body/text()'))

目录
  • 1.lxml库简介
  • 2.lxml库方法介绍
  • 3.代码实例

1.lxml库简介

lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python 爬虫。

lxml 为第三方库,需要我们通过pip命令安装:

pip install lxml

如何详细学习Python中lxml库的文档解析技巧?

2.lxml库方法介绍

lxml 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,让我们先导入模块:

from lxml import etree

使用 etree 模块的 HTML() 方法可以创建 HTML 解析对象:

from lxml import etree parse_html = etree.HTML(html)

HTML() 方法能够将 HTML 标签字符串解析为 HTML 文件,并且可以自动修正 HTML 文本:

from lxml import etree html_str = ''' <div> <ul> <li><a href="www.python.org">Python</a></li> <li><a href="www.java.com">Java</a> <li><a href="www.csdn.net">CSDN</a></li> </ul> </div> ''' html = etree.HTML(html_str) # tostring()将标签元素转换为字符串输出,注意:result为字节类型 result = etree.tostring(html) print(result.decode('utf-8'))

上述代码我故意在Java那一行少写一个</li>,可以看到输出会自动补全:

<html><body><div> <ul> <li><a href="www.python.org">Python</a></li> <li><a href="www.java.com">Java</a></li> <li><a href="www.csdn.net">CSDN</a></li> </ul> </div> </body></html>

解析为 HTML 文件后,我们可以使用 xpath() 方法来提取我们需要的数据了:

from lxml import etree html_str = ''' <div> <ul> <li><a href="www.python.org">Python</a></li> <li><a href="www.java.com">Java</a></li> <li><a href="www.csdn.net">CSDN</a></li> </ul> </div> ''' html=etree.HTML(html_str) xpath_bds='//@href' r_list = html.xpath(xpath_bds) print(r_list)

xpath() 方法使用一个 XPath 表达式作为参数,上面那段程序提取出了页面里的所有网址。

详细的 XPath 表达式语法,请参见菜鸟教程:
www.runoob.com/xpath/xpath-syntax.html

3.代码实例

lxml 库在爬虫中的使用大概就是这么多了,接下让我们结合前一篇文章(Python 网页请求:requests库的使用),来写一个普通的爬虫程序吧:

import os import sys import requests from lxml import etree x = requests.get('www.csdn.net/') html = etree.HTML(x.text) xpath_bds = '//img/@src' img_list = html.xpath(xpath_bds) # 创建img文件夹 os.chdir(os.path.dirname(sys.argv[0])) if not os.path.exists('img'): os.mkdir('img') print('创建文件夹成功') else: print('文件夹已存在') # 下载图片 for i in range(len(img_list)): img = requests.get(img_list[i]).content if img_list[i].endswith('.jpg'): with open(f'./img/{i}.jpg', 'wb') as f: f.write(img) elif img_list[i].endswith('.jpeg'): with open(f'./img/{i}.jpeg', 'wb') as f: f.write(img) elif img_list[i].endswith('.png'): with open(f'./img/{i}.png', 'wb') as f: f.write(img) else: print(f'第{i + 1}张图片格式不正确') continue print(f'第{i + 1}张图片下载成功')

这个爬虫程序爬取了CSDN首页的所有.jpg.jpeg.png格式的图片,快来自己尝试一下吧!

到此这篇关于Python文档解析lxml库的使用的文章就介绍到这了,更多相关Pythonlxml库内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!