我试图从 HTML 文档中的一堆 p 标签中提取人类可读的文本,但 bs4 中的 get_text() 函数似乎根本没有提取任何内容。
这是一个示例输出:
P标签:2022年推出,TikTok商店 已成为该平台的一个改变游戏规则的补充。它改变了它 成为内容和在线购物的一站式商店。融合的 在应用程序中,TikTok 商店允许创作者出售他们的作品 产品通过其内容、直播以及在 平台。
P 文字:无
图片
这是我的代码:
soup = BeautifulSoup(html, 'html.parser')
p_tags = soup.find_all('p')
print('P Tags: ', p_tags)
for p in p_tags:
print('P type: ', type(p))
print('P: ', p)
print('P text: ', p.text)
我已经检查过我的对象是 bs4 标签。我尝试使用 LMXL 解析器代替。我尝试使用 .text 而不是 get_text()。
这可能是由于以下问题之一造成的:
1。空格和换行符:
get_text()
默认删除空格字符和换行符。您可以使用 strip=False
参数来保留空格和换行符:
text = p.get_text(strip=False)
2。隐藏文字:
如果使用
p
等 CSS 样式隐藏 display: none
标签内的文本,则 get_text()
不会提取该文本。您应该调整您的解析逻辑或考虑使用 JavaScript 来提取隐藏文本。
3. JavaScript 生成的内容:
如果您尝试提取的文本是动态生成的,BeautifulSoup 将无法直接访问它。您必须使用像 Selenium 或 Puppeteer 这样的网络抓取框架。