2016-12-01 19 views
0

有什麼辦法來限制對reddit上特定帖子評論的深度探索。我們有replace_more_comments,它試圖儘可能多地替換more_comments,但是我們可以限制這種擴展。或者,我是否需要通過這些註釋編寫我自己的dfs版本?在PRAW中探索特定深度的評論?

感謝

回答

1

既然你提到replace_more_comments我假設你正在談論PRAW 3.5。

可悲的是,PRAW不提供形式爲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中可用(它是昨天發佈的)。 Here是文檔的特定部分,我指的:

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提供了一個方便的方法,列表(),它返回一個以與上面的代碼相同的順序遍歷的評論列表。

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_ids拆分它們並不複雜。

+0

是的,我需要去閱讀4.0文檔。謝謝!! – nighthowler