使用BeautifulSoup解析HTML时,通常情况下我们预期能够获取tbody标签。但是有时候,当我们使用find或select等方法来查找tbody标签时,会发现BeautifulSoup返回的却是空列表,这是为什么呢? 其实这是由于浏览器会自动在HTML文档中添加tbody标签,而在源代码中并不存在。因此,我们需要标准化HTML文档,才能正确地使用BeautifulSoup来获取tbody标签。 以下是一个标准化HTML文档的示例代码:
from bs4 import BeautifulSoup
import requests
url = 'http://example.com'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
html = soup.prettify(formatter="html")
soup = BeautifulSoup(html, 'html.parser')
tbody = soup.find('tbody')
首先,我们获取HTML文档并使用prettify方法标准化格式,然后再次使用BeautifulSoup解析该标准化后的文档,并进行查找tbody标签的操作,这样就可以正常获取tbody标签了。