过去几天我一直在努力学习python,我遇到了一个我不太确定如何解决的问题。我正在尝试制作一个简单的reddit bot并学习praw reddit API。当我运行以下bot时:
verify = False
我收到错误:
RequestException:请求错误[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:661)
我已经戳了戳,看到我可以插入像
这样的东西 Traceback (most recent call last):
File "C:\Users\**\Desktop\Bottest\startBot.py", line 16, in <module>
for comment in test.comments:
File "C:\Python27\lib\site-packages\praw\models\reddit\base.py", line 31, in __getattr__
self._fetch()
File "C:\Python27\lib\site-packages\praw\models\reddit\submission.py", line 133, in _fetch
'sort': self.comment_sort})
File "C:\Python27\lib\site-packages\praw\reddit.py", line 320, in get
data = self.request('GET', path, params=params)
File "C:\Python27\lib\site-packages\praw\reddit.py", line 404, in request
params=params)
File "C:\Python27\lib\site-packages\prawcore\sessions.py", line 133, in request
self._authorizer.refresh()
File "C:\Python27\lib\site-packages\prawcore\auth.py", line 328, in refresh
password=self._password)
File "C:\Python27\lib\site-packages\prawcore\auth.py", line 138, in _request_token
response = self._authenticator._post(url, **data)
File "C:\Python27\lib\site-packages\prawcore\auth.py", line 29, in _post
data=sorted(data.items()))
File "C:\Python27\lib\site-packages\prawcore\requestor.py", line 48, in request
raise RequestException(exc, args, kwargs)
RequestException: error with request [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
在排序的get()实例中,但我不确定这是否适用于此特定示例。其他一切都很好我相信 - 我可以使用pip等等。
任何帮助将不胜感激。万分感谢。
编辑:完整的错误追溯是
{{1}}
答案 0 :(得分:0)
您的问题可能存在于user_agent
内。 Reddit需要一个唯一的user_agent
。您user_agent
是唯一标识脚本的方式。 Reddit API维基页面(https://github.com/reddit/reddit/wiki/API)包含有关user_agent字符串和其他所有内容的官方和更新建议。强烈建议阅读它。
除此之外,您的user_agent
字符串必须从不包含字符串bot
。这意味着你可以改变你的行:
r = praw.Reddit('bot1')
这样的事情:
r = praw.Reddit('Name of your bot [version] by [Your Reddit username or your name]')
[您可能希望阅读有关此问题的优秀教程https://praw.readthedocs.io/en/v3.6.0/pages/getting_started.html#connecting-to-reddit]
否则你可以在创建praw对象后添加它:
r.config._ssl_url = None
不推荐使用,因为这意味着您的所有信息都可能被中间人拦截
你也可以:
添加:
r.login('bot_username', 'bot_password')
在r = praw.reddit([...])
之后
将test = r.submission(id="5u7q8x")
更改为test = r.get_submission(submission_id='5u7q8x')
并在以下后添加:
test = praw.helpers.flatten_tree(test.comments)
您现在应该能够遍历test
而不是test.comments
。
如果这不起作用,我不知道可以做什么。