2017-01-06 2 views
3

Я пытаюсь создать бота Reddit, когда при упоминании имени пользователя он получает комментарии пользователей и отправляет их в API для их анализа и возврата запроса, но когда Я стараюсь, чтобы загрузить их это дает мнеPRAW 4: 400 ERROR при попытке загрузить комментарии пользователей

prawcore.exceptions.BadRequest: received 400 HTTP response 

Это код:

if text.startswith('/u/PersonalityInsights'): 
     print "Mentioned!" 
     print comment 
     username = text.split()[1] 
     print username 
     if username.startswith('/u/'): 
      validusername = username[3:] 
      print validusername 
      global redditor 
      redditor = bot.redditor(username) 
     else: 
      global redditor 
      redditor = bot.redditor(username) 
     file = codecs.open('userscommentsreddit.txt', 'w+', encoding='utf8') 
     for comment in redditor.get_comments(limit=None): 
      print comment.body 

метод я использую: get_comments(limit=None)

в Praw 3 он работал, но здесь это выходит из строя. Я попробовал сжать имя пользователя, но сбой произошел с той же ошибкой. Счет я пытаюсь загрузить комментарии мой:/и/UnknownDeveloper

Я попытался понижая имя пользователя, но ту же ошибку, Заменены цикл с этим: for comment in redditor.comments.new(limit=None): и еще ошибка 400

Если вы вас интересует полный код здесь ссылка на GitHub gist.

Версия Praw 4.1.0

ответ

1

Я знаю, что это почти год, и скорее всего, вы переехали или решили эту проблему уже, но мне очень нравится делать исследования и ответить на SO вопросы так, здесь мы идем! :

Вот что значит ошибка 400, так что мы на той же странице:

Плохой запрос ответа код состояния HTTP 400 указывает на то, что сервер не может понять запрос из-за неправильного синтаксиса. source

Теперь в фактический ответ:

метод я использую является следующим: get_comments (предел = None)

в Praw 3 он работал, но здесь это не удается. Я попробовал сжать имя пользователя, но сбой произошел с той же ошибкой.

get_comments() вызов был амортизируется, и я предполагаю, что вы поняли это основано на том факте, вы также пытались функцию comments.new().

Но это не имеет значения, поскольку реальная проблема находится в redditor = bot.redditor(username). Этот вызов берет необработанное имя пользователя (без /u/). Таким образом, решение для вашего кода было бы удалить /u/ из переменной имени пользователя до вызова redditor = bot.redditor(username) или вы могли бы упростить использование регулярного выражения, чтобы идентифицировать действительное имя пользователя, но только вернуть часть после/u /.

Смежные вопросы