gpt4 book ai didi

python - BeautifulSoup - 如何在不打开标签和
标签之前提取文本?

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:02 25 4
gpt4 key购买 nike

我是 python 和 beautifulsoup 的新手,花了好几个小时试图解决这个问题。
我想在 <div> 中提取三个特定的文本摘录没有类。
我想要的第一个文本摘录在 <a><h4> 内的标签标签。我设法提取了它。
第二个文本摘录紧跟在结束的 h4 标签 </h4> 之后。然后是 <br>标签。
第三个文本摘录紧跟在 <br> 之后。在第二个文本提取之后标记,并且后面还跟有一个 <br>标签。

这里是我使用的 html 摘录:

<div>
<h4 class="actorboxLink">
<a href="/a-decheterie-de-bagnols-2689">Decheterie de Bagnols</a>
</h4>
Route des 4 Vents<br>
63810 Bagnols<br>
</div>

我要提取:

Decheterie de Bagnols < 行得通

Route des 4 Vents < 不起作用

63810 Bagnols < 不起作用

这是我目前的代码:

import urllib
from bs4 import BeautifulSoup
data = urllib.urlopen(url).read()
soup = BeautifulSoup(data, "html.parser")
name = soup.findAll("h4", class_="actorboxLink")

for a_tag in name:
print a_tag.text.strip()

我需要类似“soup.findAll(</h4> 之后的所有文本)”

我试过使用 .next_sibling,但无法正常工作。

有什么想法吗?谢谢

更新:
我试过这个:

for a_tag in classActorboxLink:
print a_tag.find_all_next(string=True, limit=5)

这给了我:
[u'\n', u'\r\n\t\t\t\t\t\tDecheterie\xa0de\xa0Bagnols\t\t\t\t\t', u'\n', u'\r\n\t\t\t\tRoute\xa0des\xa04\xa0Vents', u'\r\n\t\t\t\t63810 Bagnols']

这是一个开始,但我需要重新爱上所有的空格和不必要的字符。我尝试使用 .strip() , .strings.stripped_strings但它不起作用。示例:

for a_tag in classActorboxLink.strings

for a_tag in classActorboxLink.stripped_strings

print a_tag.find_all_next(string=True, limit=5).strip()

对于这三个我得到:

AttributeError: 'ResultSet' object has no attribute 'strings/stripped_strings/strip'

最佳答案

找到 h4 元素并使用 find_next_siblings() :

h4s = soup.find_all("h4", class_="actorboxLink")
for h4 in h4s:
for text in h4.find_next_siblings(text=True):
print(text.strip())

关于python - BeautifulSoup - 如何在不打开标签和 <br> 标签之前提取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707049/

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