可能是因为Beautiful soup解析的HTML文档与实际浏览器解析的文档不完全相同。可以尝试使用Chrome浏览器提供的Copy outerHTML功能获取完整的HTML代码,再将其传递给Beautiful soup来解析。以下是一个示例代码:
from bs4 import BeautifulSoup
import requests
url = 'https://example.com'
response = requests.get(url)
html_content = response.content
# 将HTML解析为BeautifulSoup对象
soup = BeautifulSoup(html_content, 'html.parser')
# 使用Chrome浏览器的Copy outerHTML功能获取完整的HTML代码
chrome_html = '...' # 复制完整的HTML代码并粘贴到这里
# 将Chrome浏览器生成的HTML代码解析为BeautifulSoup对象
chrome_soup = BeautifulSoup(chrome_html, 'html.parser')
# 搜索包含所需元素的div
div = chrome_soup.find('div', attrs={'class': 'my-class'})
# 在div元素内搜索其他元素
elements = div.find_all('p')
# 打印结果
print(elements)
在上面的示例中,我们首先使用requests库获取一个网页,并使用Beautiful soup解析HTML文档。然后,我们通过Chrome浏览器的Copy outerHTML功能获取文档的完整HTML代码,并将其作为字符串传递给Beautiful soup,再使用 find()方法搜索包含所需元素的div。最后,我们在该div元素内使用find_all()方法查找其他元素。