gpt4 book ai didi

python - 使用 BeautifulSoup 抓取 标签文本没有文本属性

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:18 25 4
gpt4 key购买 nike

我抓取了一个论坛页面,我将所有帖子保存在一个名为 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

关于python - 使用 BeautifulSoup 抓取 <span> 标签文本没有文本属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37373764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com