Python lxml etree库解析HTML示例
from lxml import etree
text = '''
<ul id='ultest'>
<li class='item-0'><a href='link1.html'>first item</a></li>
<li class='item-1'><a href='link2.html'>second item</a></li>
<li class='item-inactive'><a href='link3.html'>third item</a></li>
<li class='item-1'><a href='link4.html'><span>fourth item</span></a></li>
<li class='item-0'><a href='link5.html'>fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
</ul>
#调用HTML类进行初始化,这样就成功构造了一个XPath解析对象。
page = etree.HTML(text)
# 打印输出第三个li标签
print(page.xpath('//li[3]'))
#打印输出li标签下所有属性节点:
li_list = page.xpath('//li')
for li in li_list:
print(li.attrib)
#打印输出a标签的内容,用text()
a_list = page.xpath('//a')
for a in a_list:
print(a.text)
#打印输出ul标签下的所有内容,用string()
ul = page.xpath('//ul')[0]
print(ul.xpath('string()'))
示例代码说明:
- 导入lxml库:
from lxml import etree - 定义HTML文本:
text变量包含了需要解析的HTML代码,需要注意的是代码中缺少一个</li>闭合标签。 - 创建XPath解析对象:
page = etree.HTML(text)使用etree.HTML()方法将HTML文本解析成一个XPath解析对象。 - 提取特定节点信息:
page.xpath('//li[3]'): 提取第三个li标签,并打印输出page.xpath('//li'): 提取所有li标签,并遍历打印输出每个li标签的属性page.xpath('//a'): 提取所有a标签,并遍历打印输出每个a标签的内容page.xpath('//ul')[0].xpath('string()'): 提取第一个ul标签,并使用string()方法提取ul标签下的所有内容
总结:
通过使用lxml etree库,我们可以方便地解析HTML文档,并使用XPath表达式提取特定节点信息。这对于网页数据爬取和分析非常有用。
原文地址: https://www.cveoy.top/t/topic/n0zQ 著作权归作者所有。请勿转载和采集!