![](/img/trans.png)
[英]scrape text from a span tag containing nested span tag in BeautifulSoup
[英]scrape <span> tag text using BeautifulSoup has no text attribute
我已经刮过一个论坛页面,已经将所有帖子保存在名为post_list的列表中。 但似乎我无法进一步寻找帖子作者:
这是我在运行命令中获得的内容,而无需尝试查找文本:
for post in post_list:
print post.findAll("span" , {"itemprop" : "name"})
这给我:
[<span class="hide" itemprop="name">00Amin</span>]
[<span class="hide" itemprop="name">arminheidari</span>]
[<span class="hide" itemprop="name">Zapad</span>]
[<span class="hide" itemprop="name">iMosi</span>]
[<span class="hide" itemprop="name">arminheidari</span>]
[<span class="hide" itemprop="name">alen</span>]
[<span class="hide" itemprop="name">mahdavi3d</span>]
[<span class="hide" itemprop="name">arminheidari</span>]
[<span class="hide" itemprop="name">alen</span>]
[<span class="hide" itemprop="name">rezatizi</span>]
[<span class="hide" itemprop="name">Trooper</span>]
[<span class="hide" itemprop="name">rasoolmr</span>]
[<span class="hide" itemprop="name">arminheidari</span>]
[<span class="hide" itemprop="name">iMosi</span>]
[<span class="hide" itemprop="name">anybody</span>]
但是,如果我使用.text尝试相同的代码:
for post in post_list:
print post.findAll("span" , {"itemprop" : "name"}).text
我得到:
AttributeError: 'ResultSet' object has no attribute 'text'
如果我作弊并将for循环结果保存到变量(或列表)中,然后尝试从那里获取文本,我将再次失败!
posts = []
for post in post_list:
posts.append(post.findAll("span", {"itemprop" : "name"}))
我没有错误,但是我再也找不到任何.text属性
我已经搜索并测试了我发现的其他问题,但是它们不起作用。
正如错误消息清楚地表明的那样,这是因为findAll()
返回的ResultSet
没有属性text
。 您需要遍历结果,或使用列表理解:
for post in post_list:
print [span.text for span in post.findAll("span" , {"itemprop" : "name"})]
如果每个post
始终只有一个span
元素(从第一个代码段的输出来看),那么您应该能够使用find()
而不是findAll()
:
for post in post_list:
print post.find("span" , {"itemprop" : "name"}).text
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.