Python 文档解析lxml库的使用详解 目录 1.lxml库简介 2.lxml库方法介绍 3.代码实例 1.lxml库简介 lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python 爬虫. lxml 为第三方库,需要我们通过pip命令安装: pip install lxml 2.lxml库方法介绍 lxm
目录
- 1.lxml库简介
 - 2.lxml库方法介绍
 - 3.代码实例
 
1.lxml库简介
lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python 爬虫。
lxml 为第三方库,需要我们通过pip命令安装:
pip install 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表达式语法,请参见菜鸟教程:
https://www.runoob.com/xpath/xpath-syntax.html
3.代码实例
lxml 库在爬虫中的使用大概就是这么多了,接下让我们结合前一篇文章(Python 网页请求:requests库的使用),来写一个普通的爬虫程序吧:
import os
import sys
import requests
from lxml import etree
x = requests.get('https://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库的使用的文章就介绍到这了,更多相关Python lxml库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
本文标题为:Python 文档解析lxml库的使用详解
				
        
 
            
        基础教程推荐
- 停止使用Python 2:您需要了解的关于Python 3的内容| Hackaday 2023-09-04
 - Python中并发、进程、线程的总结 2023-09-03
 - Python函数进阶与文件操作详情 2022-09-02
 - 一台使用python的计算机(Windows Server 2008)上允许的最大同时HTTP连接数是多少 2023-11-13
 - Python实现视频转换为字符画详解 2023-08-09
 - OpenCV+MediaPipe实现手部关键点识别 2023-08-11
 - Python-如何将图片下载到Windows上的特定文件夹位置? 2023-11-13
 - Python开发网站的完整指南 2023-10-08
 - python FastApi实现数据表迁移流程详解 2022-08-30
 - 基于Python PaddleSpeech实现语音文字处理 2024-02-17
 
    	
    	
    	
    	
    	
    	
    	
    	
						
						
						
						
						
				
				
				
				