为什么来自 beautifulsoup4 的 get_text() 没有提取任何内容?

问题描述 投票:0回答:1

我试图从 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()。

python beautifulsoup html-parsing
1个回答
0
投票

这可能是由于以下问题之一造成的:

1。空格和换行符:

get_text()
默认删除空格字符和换行符。您可以使用
strip=False
参数来保留空格和换行符:

text = p.get_text(strip=False)

2。隐藏文字:

如果使用

p
等 CSS 样式隐藏
display: none
标签内的文本,则
get_text()
不会提取该文本。您应该调整您的解析逻辑或考虑使用 JavaScript 来提取隐藏文本。

3. JavaScript 生成的内容:

如果您尝试提取的文本是动态生成的,BeautifulSoup 将无法直接访问它。您必须使用像 Selenium 或 Puppeteer 这样的网络抓取框架。

© www.soinside.com 2019 - 2024. All rights reserved.