当前位置: 首页 > 工具软件 > lxml > 使用案例 >

lxml库

沈嘉瑞
2023-12-01

lxml库简介

lxml是一个Python库,使用它可以轻松处理XML和HTML文件,还可以用于web爬取。市面上有很多现成的XML解析器,但是为了获得更好的结果,开发人员有时更愿意编写自己的XML和HTML解析器。这时lxml库就派上用场了。这个库的主要优点是易于使用,在解析大型文档时速度非常快,归档的也非常好,并且提供了简单的转换方法来将数据转换为Python数据类型,从而使文件操作更容易。

安装方法

pip install lxml

使用方法

html内容

test、test.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Study</title>
</head>
<body>
	<h1>java</h1>
	<p href="https://blog.csdn.net/qq_41220451" class="p1">python</p>
	<p href="https://blog.csdn.net/qq_41220451">c</p>
	<a>c++</a>
	<a>html</a>
	<a>html</a>
	<a>css</a>
</body>
</html>

导包

from lxml import etree

获取内容或文件

html = etree.HTML(test) #获取内容
html = etree.HTML(test.html) #获取文件

获取html标签

语法

	//p	#获取html下所有的p标签
	/html/body/p	#顺着节点找到p标签
	/descendant::p	#当前节点后代里面找 a 标签

实例

from lxml import etree
html = etree.HTML(test)
p = html.xpath('//p')
print(p)

结果:[<Element p at 0x17f0f0aad48>, <Element p at 0x17f0f0aad88>]

from lxml import etree
html = etree.HTML(test)
p = html.xpath('/html/body/p')
print(p)

结果:[<Element p at 0x1b491bead88>, <Element p at 0x1b491beadc8>]

from lxml import etree
html = etree.HTML(test)
p = html.xpath('/descendant::p')
print(p)

结果:[<Element p at 0x1b62cd5ad88>, <Element p at 0x1b62cd5adc8>]

获取html标签属性、文本

获取p标签中的href属性值

from lxml import etree
html = etree.HTML(test)
p = html.xpath('/html/body/p/@href')
print(p)

结果:['https://blog.csdn.net/qq_41220451', 'https://blog.csdn.net/qq_41220451']

获取所有a标签的文本内容

from lxml import etree
html = etree.HTML(test)
a = html.xpath('/html/body/a/text()')
print(a)

结果:['c++', 'html', 'css']

获取p标签中class属性为p1的标签的文本内容

from lxml import etree
html = etree.HTML(test)
p = html.xpath('/html/body/p[@class="p1"]/text()')
print(p)

结果:['python']

从p标签获取内容为python的

html.xpath('/html/body/p[text()="python"]')

关键语句

#查看标签属性
html.xpath('/html/body/p/@href')
#查看标签文本
html.xpath('/html/body/a/text()')
#属性筛选
html.xpath('/html/body/p[@class="p1"]/text()')
#文本筛选
html.xpath('/html/body/p[text()="python"]')
#位置筛选
html.xpath('/html/body/a[2]')

如有错误,请指正

 类似资料: