繁体   English   中英

<span>使用BeautifulSoup</span>刮取<span>标签文本没有文本属性</span>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM