【发布时间】:2016-05-22 11:31:25
【问题描述】:
我已经抓取了一个论坛页面,我已将所有帖子保存在一个名为 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 属性
我已经搜索并测试了我找到的其他一些问题,但它们不起作用。
【问题讨论】:
-
因为不是
.text而是.string,根据文档? -
不,它也没有 .string 属性...
-
@spectras
text和string在 BS 元素中都可用。问题是,findAll()以ResultSet的形式返回多个元素,它既没有text也没有string
标签: python web-scraping beautifulsoup