Python bs4模块(BeautifulSoup4)是Python解析HTML和XML文档的一个库,它可以从HTML或XML格式的文档中提取数据。
一、安装bs4模块
使用bs4模块需要先安装bs4模块,方法如下:
pip install bs4
安装完成之后,我们可以在Python代码中直接导入bs4模块。
二、使用bs4解析HTML文档
1、解析HTML
使用bs4解析HTML文档的方法非常简单,只需要将HTML文档传入BeautifulSoup类中即可:
from bs4 import BeautifulSoup
html_doc = <html><head><title>这是一个测试页面</title></head><body><p>这是一个测试段落</p></body></html>
soup = BeautifulSoup(html_doc, 'html.parser')
2、查找标签
使用bs4可以非常轻松地查找HTML文档中的标签,可以通过标签名、class、id等属性进行查找。
(1)按标签名查找
通过soup.tagname可以按照标签名查找HTML文档中的标签,如下例子中查找HTML文档中的title标签:
from bs4 import BeautifulSoup
html_doc = <html><head><title>这是一个测试页面</title></head><body><p>这是一个测试段落</p></body></html>
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.title)
输出结果为:
<title>这是一个测试页面</title>
(2)按class查找
通过soup.find_all('tagname', class_='classname')可以按照class属性查找HTML文档中的标签,如下例子中查找HTML文档中class属性为“test”的p标签:
from bs4 import BeautifulSoup
html_doc = <html><head><title>这是一个测试页面</title></head><body><p class="test">这是一个测试段落</p></body></html>
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.find_all('p', class_='test'))
输出结果为:
[<p class="test">这是一个测试段落</p>]
(3)按id查找
通过soup.find_all('tagname', id='idname')可以按照id属性查找HTML文档中的标签,如下例子中查找HTML文档中id属性为“test”的p标签:
from bs4 import BeautifulSoup
html_doc = <html><head><title>这是一个测试页面</title></head><body><p id="test">这是一个测试段落</p></body></html>
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.find_all('p', id='test'))
输出结果为:
[<p id="test">这是一个测试段落</p>]
三、使用bs4解析XML文档
bs4同样可以用来解析XML格式的文档,在传入文档时只需要设置解析器为“xml”即可。
from bs4 import BeautifulSoup
xml_doc = <?xml version="1.0" encoding="UTF-8"?><root><test>这是一个测试</test></root>
soup = BeautifulSoup(xml_doc, 'xml')
print(soup.test)
输出结果为:
<test>这是一个测试</test>
四、结语
Python bs4模块非常方便实用,可以用来解析HTML和XML格式的文档,从而提取出需要的信息。在实际开发中,经常需要对网页数据进行提取,使用bs4模块可以轻松实现这个需求。