Как получить комментарии от Reddit, используя API? - PullRequest
0 голосов
/ 07 февраля 2020

Я могу получить доступ к subreddit с этим кодом:

hot = praw.Reddit(...).subreddit("AskReddit").hot(limit=10)
for post in hot:
  print(post.title, post.url)

Would you watch a show where a billionaire CEO has to go an entire month on their lowest paid employees salary, without access to any other resources than that of the employee? What do you think would happen? https://www.reddit.com/r/AskReddit/comments/f08dxb/would_you_watch_a_show_where_a_billionaire_ceo/
All of the subreddits are invited to a house party. What kind of stuff goes down? https://www.reddit.com/r/AskReddit/comments/f04t6o/all_of_the_subreddits_are_invited_to_a_house/

Как я могу получить комментарии к конкретному представлению, например к первому: https://www.reddit.com/r/AskReddit/comments/f08dxb/would_you_watch_a_show_where_a_billionaire_ceo/ enter image description here

1 Ответ

1 голос
/ 07 февраля 2020

PRAW имеет раздел в документации , который отвечает на этот вопрос. См. Извлечение и анализ комментариев: извлечение комментариев с помощью PRAW .

Изменение кода на основе связанной документации приводит к выводу

from praw.models import MoreComments

reddit = praw.Reddit(...)

hot = reddit.subreddit("AskReddit").hot(limit=10)
for submission in hot:
    print(submission.title)
    for top_level_comment in submission.comments:
        if isinstance(top_level_comment, MoreComments):
            continue
        print(top_level_comment.body)

. все комментарии верхнего уровня по представлению. Обратите внимание, что класс Comment имеет другие атрибуты, многие из которых задокументированы здесь . Например, чтобы напечатать некоторые из атрибутов comment, которые вы обведены красным, попробуйте:

print(comment.author)
print(comment.score)
print(comment.created_utc)  # as a Unix timestamp
print(comment.body)

Как предполагает связанная документация, вы можете получить каждый комментарий в представлении, используя .list() Метод:

reddit = praw.Reddit(...)

hot = reddit.subreddit("AskReddit").hot(limit=10)
for submission in hot:
    print(submission.title)
    submission.comments.replace_more(limit=None)
    for comment in submission.comments.list():
        print(comment.author)
        print(comment.score)
        print(comment.created_utc)  # as a Unix timestamp
        print(comment.body)
...