首页 > 解决方案 > 如何在 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)

标签: pythonfor-loopgeneratorpraw

解决方案


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 中的特定 reddit 线程获取所有评论


推荐阅读