python - 如何在 for 循环中从 PRAW 访问帖子
问题描述
我正在使用 praw 提取数据室 reddit 我想获取提交标题 ID 和评论,但是获取每个提交评论的 for 循环使它只打印一个提交和该提交的评论,但它应该是 10 个帖子。
subred = reddit.subreddit("apexlegends")
hot_apex = subred.top(limit=10)
items = hot_apex
first = next(items)
print('first item:', first)
comment = reddit.submission(id=items)
print (type(comment)
for item in items:
print ('NEW POST--',item.title,'post id --', item)
i = str(item)
sub_id = reddit.submission(id=i)
for comment in sub_id.comments:
print (comment.body)
解决方案
for 循环未正确运行的原因是您试图在 for 循环中使用元素之前访问它们。
你应该删除
items = hot_apex
first = next(items)
print('first item:', first)
comment = reddit.submission(id=items)
print (type(comment)
制作你的代码
subred = reddit.subreddit("apexlegends")
hot_apex = subred.top(limit=10)
for item in hot_apex:
print ('NEW POST--',item.title,'post id --', item)
sub_id = reddit.submission(id=item)
for comment in sub_id.comments:
print (comment.body)
这是因为 next() 运算符就像遍历一个无法索引数组中任何内容的单链表,您可以通过在该 while 循环中继续执行 next() 来使用 while 循环遍历它。但是使用您构建的 for 循环,这将是访问元素的正确方法。
你没有得到更多评论的原因是你只得到了顶级评论而没有得到他们的孩子。您应该查看此内容以获取该帖子的其他评论。
推荐阅读
- python - 从 django urls 错误运行的 websockets:RuntimeError:线程“Dummy-1”中没有当前事件循环
- java - com.fasterxml.jackson.databind.JsonMappingException:由于 Spring Boot 应用程序中的输入结束,没有要映射的内容
- c# - 从 ViewModel 访问附加的属性集合
- elasticsearch - 如何在 Elasticsearch 中部分删除索引数据
- ruby-on-rails - `has_many through:` 关系的问题
- python - 我可以使用部分实现来构建测试期望吗?
- python - 我需要使用函数“reduce”找到数字的阶乘
- git - 如何对私有的jelastic环境进行版本控制
- c# - 将 JSON 转换为字符串 c# 时使用 JsonConvert.DeserializeObject 出错
- javascript - 如何通过ajax发送错误/成功消息而不点击表单中的提交按钮(如果没有表单)laravel?