首页 > 解决方案 > 401 HTTP 响应,当我从 praw.ini 加载客户端密码和客户端 ID 时

问题描述

最近,我开始了一个 PRAW 项目,旨在从 r/todayilearned subreddit 中抓取。浏览文档,如果发现加载客户端 ID、客户端密码、用户名和密码的最佳方法是将其存储在 praw.ini 文件中。

这是我使用的格式,其中“........”由各自的输入填充。

[TIL]
client_id="´............"
client_secret="............"
password="............"
username=".........."
user_agent="TIL by u/........"

我执行了这段代码,我得到了

import praw

reddit = praw.Reddit("TIL")
subreddit = reddit.subreddit('learnpython')

Traceback (most recent call last):
  File "C:\Users\HP\Desktop\python\TIL\src\main.py", line 7, in <module>
    for submission in subreddit.get_hot():
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\praw\models\reddit\base.py", line 34, in __getattr__
    self._fetch()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\praw\models\reddit\subreddit.py", line 584, in _fetch
    data = self._fetch_data()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\praw\models\reddit\subreddit.py", line 581, in _fetch_data
    return self._reddit.request("GET", path, params)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\praw\reddit.py", line 849, in request
    return self._core.request(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\sessions.py", line 328, in request
    return self._request_with_retries(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\sessions.py", line 226, in _request_with_retries
    response, saved_exception = self._make_request(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\sessions.py", line 183, in _make_request 
    response = self._rate_limiter.call(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\rate_limit.py", line 33, in call
    kwargs["headers"] = set_header_callback()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\sessions.py", line 281, in _set_header_callback
    self._authorizer.refresh()
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\auth.py", line 379, in refresh
    self._request_token(
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\auth.py", line 155, in _request_token    
    response = self._authenticator._post(url, **data)
  File "C:\Users\HP\AppData\Local\Programs\Python\Python39\lib\site-packages\prawcore\auth.py", line 38, in _post
    raise ResponseException(response)
prawcore.exceptions.ResponseException: received 401 HTTP response

但是,当我这样做时,它会起作用。

import praw

reddit = praw.Reddit(
client_id="´............",
client_secret="............",
password="............",
username="..........",
user_agent="TIL by u/........"
)

subreddit = reddit.subreddit('learnpython')

我怎样才能解决这个问题?提前致谢。

标签: pythonhttpreddithttp-status-code-401praw

解决方案


我测试了它,它必须没有" "

[TIL]
client_id=2Ca......Mh4
client_secret=Bq7............X0z
password=SeCrEtPaSsWoRd
username=james_bond
user_agent=TIL by u/james_bond

但它可以使用空格使其更具可读性

[TIL]
client_id = 2Ca......Mh4
client_secret = Bq7............X0z
password = SeCrEtPaSsWoRd
username = james_bond
user_agent = TIL by u/james_bond

顺便提一句:

它也可以使用:而不是=

[TIL]
client_id:2Ca......Mh4
client_secret:Bq7............X0z
password:SeCrEtPaSsWoRd
username:james_bond
user_agent:TIL by u/james_bond
[TIL]
client_id : 2Ca......Mh4
client_secret : Bq7............X0z
password : SeCrEtPaSsWoRd
username : james_bond
user_agent : TIL by u/james_bond

编辑:

我检查了文档praw.ini 文件,它也显示了没有的示例" "


推荐阅读