【发布时间】:2015-09-22 01:36:38
【问题描述】:
我是 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'
【问题讨论】:
标签: python html parsing beautifulsoup html-parsing