尝试下载用户评论时出现PRAW 4:400错误

时间:2017-01-06 11:13:58

标签: python python-2.7 praw

我试图创建一个Reddit僵尸程序,当提到用户名时,它会获取用户评论并将其发送到API来分析它们并返回请求但是当我尝试下载它时它会给我

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中它起作用但在这里它失败了。我尝试降低用户名,但失败并出现同样的错误。我尝试下载评论的帐户是我的:/ u / UnknownDeveloper

我尝试降低用户名,但同样的错误,用以下代码替换for循环:for comment in redditor.comments.new(limit=None):仍然是错误400

如果您对完整代码感兴趣,请输入GitHub gist

Praw 4.1.0的版本

1 个答案:

答案 0 :(得分:1)

我知道这已经快一年了,你可能已经开始或已经解决了这个问题,但我真的很喜欢做研究并回答SO问题,所以我们走了!:

以下是400错误的含义,因此我们在同一页面上:

  

HTTP 400错误请求响应状态代码表示由于语法无效,服务器无法理解请求。 source

现在进入实际答案:

  

我使用的方法是:get_comments(limit = None)

     在PRAW 3中它起作用但在这里它失败了。我尝试小写用户名,但失败并出现同样的错误。

get_comments()调用已弃用,我假设您根据您尝试使用comments.new()函数的事实来解决此问题。

但这根本不重要,因为真正的问题出在redditor = bot.redditor(username)。该调用采用原始用户名(不含/u/)因此,代码的解决方案是在调用/u/之前从用户名变量中删除redditor = bot.redditor(username),或者您可以通过简化使用正则表达式来识别有效的用户名,但只返回/ u /.

之后的部分