有什么方法可以限制针对reddit上特定帖子的评论探索深度。我们有replace_more_comments,它尝试替换尽可能多的more_comments,但我们可以限制此扩展。还是我需要根据这些注释编写自己的dfs版本?
谢谢
既然您提到了,replace_more_comments
我假设您正在谈论的是PRAW 3.5。
遗憾的是,PRAW没有以form形式提供信息comment.depth
。实际上,它不会将这些信息保留在任何地方。
如果要设置的注释深度很低(仅类似于第一级和第二级注释),则可以不使用dfs或bfs。
submission.replace_more_comments(limit=None,threshold=0)
for top_level_comment in submission.comments:
for second_level_comment in top_level_comment.replies:
print(second_level_comment.body)
如果您想要不固定的深度,那么您将拥有自己的实现。但是由于注释的设置和从reddit api中的检索方式,您应该使用bfs而不是dfs。
还有另一种方法,该方法在PRAW 4.0(已于昨天发布)中可用。这是我要参考的文档的特定部分:
submission.comments.replace_more(limit=0)
comment_queue = submission.comments[:] # Seed with top-level
while comment_queue:
comment = comment_queue.pop(0)
print(comment.body)
comment_queue.extend(comment.replies)
能够进行自己的广度优先遍历确实很棒,但CommentForest提供了一种便捷方法list(),该方法返回以与上面的代码相同的顺序遍历的注释列表。因此,以上内容可以重写为:
submission.comments.replace_more(limit=0)
for comment in submission.comments.list():
print(comment.body)
通过此操作,您将收到一份评论列表,以便bfs可以为您提供。
[first_level_comment, first_level_comment, first_level_comment, second_level_comment,
second_level_comment, third_level_comment, ...]
在这种情况下,基于id和parent_id拆分它们并不复杂。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句