Praw AttributeError: объект 'NoneType' не имеет атрибута 'get_comments'

Я написал простой скрипт для идентификации пользователей, которые вносят вклад в определенные сабреддиты. В качестве отказа от ответственности, если вы планируете использовать этот код, вы должны быть уверены, что анонимизируете данные (как и я, путем агрегирования данных и удаления всех имен пользователей). Он работает с некоторыми субреддитами, но не кажется очень надежным, о чем свидетельствует следующая ошибка, которую я получаю при запуске с / r / nba:

AttributeError: объект 'NoneType' не имеет атрибута 'get_comments'

Ниже мой код:

import praw
import pprint
users = [] #[username, flair, comments]

r=praw.Reddit(user_agent="user_agent")
r.login("username", "password")
submissions = r.get_subreddit('nba').get_top(limit=1) #won't work with higher limit?
for submission in submissions:
    submission.replace_more_comments(limit=3, threshold=5)
    flat_comments = praw.helpers.flatten_tree(submission.comments)
    for comment in flat_comments:
        user_comments = []
        for i in comment.author.get_comments(limit=2):
            user_comments.append(i.body)
            #user_comments.append(str(i.body)) #sometimes causes an error as well
        users.append([str(comment.author), comment.author_flair_text, user_comments])

pprint.pprint(users)

Когда я меняю сабреддит на «python», кажется, возникает меньше проблем, поэтому, надеюсь, кто-нибудь сможет указать, что мне не хватает. Заранее спасибо!


person Daniel Sussman    schedule 10.11.2014    source источник


Ответы (1)


Итак, вы видите линию

for i in comment.author.get_comments(limit=2):

Я предполагаю, что ваш код не работает, потому что

comment.author is None
person user3684792    schedule 10.11.2014
comment
Я не понимаю, как это будет работать в некоторых случаях, но не в других ... другими словами, почему у комментария иногда нет автора? - person Daniel Sussman; 10.11.2014
comment
Почему бы не попробовать немного поиграть, чтобы увидеть, сможете ли вы определить эти случаи. Вот что я делаю, если застреваю. Вы можете попробовать немного цикла for, например, for comment в flat_comments: if comment.author is None: print comment Может быть, это покажет - person user3684792; 10.11.2014
comment
почему у комментария иногда нет автора? Возможно, потому, что автор удалил свой аккаунт? - person kindall; 10.11.2014
comment
Это было отличное предложение - оказалось, что ваша строка содержит текст комментария «удалено» и автор «Нет». Благодаря тонну! - person Daniel Sussman; 11.11.2014