2016-12-01 2 views
0

Gibt es eine Möglichkeit, die Tiefe der Exploration von Kommentaren für einen bestimmten Beitrag auf Reddit zu beschränken. Wir haben die replace_more_comments, die versucht, so viele weitere_kommentare wie möglich zu ersetzen, aber wir können diese Expansion einschränken. Oder muss ich meine eigene Version eines dfs über diese Kommentare schreiben?Erkunden Kommentare bis zu einer bestimmten Tiefe in PRAW?

Dank

Antwort

1

Da Sie erwähnen replace_more_comments ich Sie gehe davon sprechen über praw 3.5.

Leider liefert PRAW keine Informationen in Form comment.depth. Es hält diese Information eigentlich nirgends.

Wenn Sie eine festgelegte Tiefe von Kommentaren erhalten möchten, die niedrig ist (nur Kommentare auf erster und zweiter Ebene), dann können Sie dies ohne dfs oder bfs tun.

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) 

Wenn Sie eine nicht fixierte Tiefe wünschen, bleibt Ihre eigene Implementierung übrig. Aber aufgrund der Art und Weise, wie Kommentare von reddit api erstellt und abgerufen werden, sollten Sie bfs anstelle von dfs verwenden.

Es gibt auch einen anderen Weg, der in PRAW 4.0 verfügbar ist (er wurde gestern veröffentlicht). Here ist insbesondere Teil docs Ich beziehe:

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) 

Während es genial ist in der Lage sein, eigene Breiten erste Querungen zu tun, CommentForest bietet eine bequeme Methode, Liste(), die eine zurück Liste der Kommentare, die in der gleichen Reihenfolge wie der obige Code durchlaufen wurden. So kann die oben umgeschrieben werden:

submission.comments.replace_more(limit=0) 
for comment in submission.comments.list(): 
    print(comment.body) 

Daraus Sie eine Liste von Kommentaren, um empfangen, dass bfs würden Sie.

[first_level_comment, first_level_comment, first_level_comment, second_level_comment, 
second_level_comment, third_level_comment, ...] 

In diesem Fall ist es nicht so kompliziert, diese basierend auf ids und parent_ids aufzuteilen.

+0

Ja, ich müsste die 4.0 Dokumente lesen. Vielen Dank!! – nighthowler

Verwandte Themen