gpt4 book ai didi

python - BS4 从所有 DIV 标签中获取文本,但不包括子标签

转载 作者:行者123 更新时间:2023-12-02 23:40:48 25 4
gpt4 key购买 nike

我正在抓取多个网页,但某些网站的内容/文本带有 div 标签而不是 p 或 span 时遇到问题。以前,该脚本可以很好地从 p 和 span 标签获取文本,但是如果代码片段如下所示:

<div>Hello<p>this is a test</p></div>

使用 find_all('div') 和 .getText() 提供以下输出:

Hello this is a test

我希望得到“Hello”的结果。这将使我能够确定哪些内容位于哪些标签中。我尝试过使用 recursive=False 但这似乎无法在具有多个包含内容的 div 标签的整个网页上运行。

添加了代码片段

req = urllib.request.Request("https://www.healthline.com/health/fitness-exercise/pushups-everyday", headers={'User-Agent': 'Mozilla/5.0'})
html = urllib.request.urlopen(req).read().decode("utf-8").lower()
soup = BeautifulSoup(html, 'html.parser')
divTag = soup.find_all('div')
text = []
for div in divTag:
i = div.getText()
text.append(i)
print(text)

提前致谢。

最佳答案

根据您的信息,在此回答:how to get text from within a tag, but ignore other child tags

这会导致这样的结果:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
for div in soup.find_all('div'):
print(div.find(text=True, recursive=False))

编辑:你只需要改变

i = div.getText()

i = div.find(text=True, recursive=False)

关于python - BS4 从所有 DIV 标签中获取文本,但不包括子标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61252823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com