发布时间:2024-03-12 23:30:01
!DOCT YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 Xpath 表达式提供了良好的支持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。
pip3 install lxml在 CMD 命令行验证是否安装成功。若引入模块,不返回错误则说明安装成功。
>>> import lxml >>>
from lxml import etree
parse_html = etree.HTML(html)HTML() 方法能够将 HTML 标签字符串解析为 HTML 文件,该方法可以自动修正 HTML 文本。示例如下:
from lxml import etree html_str = ''' ''' html = etree.HTML(html_str) # tostring()将标签元素转换为字符串输出,注意:result为字节类型 result = etree.tostring(html) print(result.decode('utf-8'))输出结果如下:
上述 HTML 字符串存在缺少标签的情况,比如“365工具网”缺少一个 闭合标签,当使用了 HTML() 方法后,会将其自动转换为符合规范的 HTML 文档格式。
r_list = parse_html.xpath('xpath表达式')
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', '编程', '微博', '百度贴吧', '天猫淘宝', '京东购物', '编程', '安全卫士', '视频娱乐', '年轻娱乐', '搜索引擎']
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)输出结果:
['http://www.www.365tools.cn/product/', 'http://www.www.365tools.cn/', '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/']
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)输出结果:
['http://www.www.365tools.cn/', '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/']