我已经删除了论坛页面,我已将所有帖子保存在名为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属性
我已经搜索并测试了我发现的其他一些问题,但它们无效。
答案 0 :(得分:3)
正如错误消息明确暗示的那样,那是因为findAll()
返回ResultSet
,其中没有属性text
。您需要遍历结果,或使用列表解析:
for post in post_list:
print [span.text for span in post.findAll("span" , {"itemprop" : "name"})]
如果每个span
中始终只有一个post
元素(根据您的第一个代码段的输出判断),那么您应该能够使用find()
代替{{ 1}}:
findAll()