首页 文章

尝试下载用户评论时PRAW 4:400 ERROR

提问于
浏览
3

我正在尝试创建一个Reddit bot,当提到用户名时,它会获取用户注释并将其发送到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 回答

  • 1

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

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

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

    现在进入实际答案:

    我正在使用的方法是:PRAW 3中的get_comments(limit = None)它工作但是在这里它失败了 . 我尝试降低用户名,但失败并出现同样的错误 .

    get_comments() 调用已被折旧,我假设你根据你也尝试了 comments.new() 函数的事实来解决这个问题 .

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

相关问题