2016-12-01 2 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, ...] 

В этом случае не так сложно разбить их на основе идентификаторов и parent_ids.

+0

Да, мне нужно будет прочитать 4.0 документа. Благодаря!! – nighthowler