使用lxml库进行网页内容的爬取
(1)根据文本text内容创建test.html文件
(2)导入需要的模块
(3)根据test.html生成html解析对象
(4)显示HTML解析对象的类型
(5)显示所有的li标签的元素
(6)显示li标签中class=item-1的a标签的text;截图显示html对象类型、li标签的元素和a标签的text
麻烦指导一下,谢谢。
首先需要安装lxml库,可以使用pip install lxml命令进行安装。
接下来按照题目要求进行操作:
(1)根据文本text内容创建test.html文件
text = """
<html>
<body>
<ul>
<li class="item-1"><a href="link1.html">item 1</a></li>
<li class="item-2"><a href="link2.html">item 2</a></li>
<li class="item-3"><a href="link3.html">item 3</a></li>
<li class="item-4"><a href="link4.html">item 4</a></li>
<li class="item-5"><a href="link5.html">item 5</a></li>
</ul>
</body>
</html>
"""
with open('test.html', 'w', encoding='utf-8') as f:
f.write(text)
(2)导入需要的模块
from lxml import etree
(3)根据test.html生成html解析对象
with open('test.html', 'r', encoding='utf-8') as f:
html = f.read()
tree = etree.HTML(html)
(4)显示HTML解析对象的类型
print(type(tree)) # <class 'lxml.etree._Element'>
(5)显示所有的li标签的元素
lis = tree.xpath('//li')
for li in lis:
print(etree.tostring(li, encoding='utf-8').decode('utf-8'))
(6)显示li标签中class=item-1的a标签的text;截图显示html对象类型、li标签的元素和a标签的text
a_text = tree.xpath('//li[@class="item-1"]/a/text()')[0]
print(a_text) # item 1
最后需要注意的是,由于lxml库解析HTML时会自动添加缺失的标签和属性,因此生成的HTML解析对象可能与原始HTML文本存在差异。如果需要严格保留原始HTML文本,可以使用BeautifulSoup库进行解析。