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

Mat*_*cka 3 python python-2.7 praw

我正在尝试创建一个 Reddit 机器人,当提到用户名时,它会获取用户评论并将其发送到 API 以分析它们并返回请求,但是当我尝试下载它们时,它会给我

prawcore.exceptions.BadRequest: received 400 HTTP response
Run Code Online (Sandbox Code Playgroud)

这是代码:

    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
Run Code Online (Sandbox Code Playgroud)

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

在 PRAW 3 中它有效,但在这里它失败了。我尝试小写用户名,但失败并出现相同的错误。我试图下载评论的帐户是我的:/u/UnknownDeveloper

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

如果您对完整代码感兴趣,请访问GitHub gist链接。

Praw 4.1.0 版本

Zek*_*man 5

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

这是 400 错误的含义,所以我们在同一页面上:

HTTP 400 Bad Request 响应状态代码表示由于语法无效,服务器无法理解请求。来源

现在进入实际答案:

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

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

get_comments()呼叫被贬值了,我以为你想通根据你也尝试了这样的事实这一点comments.new()功能。

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