我正在写一个推特机器人应该在reddits r / dankmemes的热门帖子中占据首位,找到.png文件,下载然后用tweepy发布到twitter。我不是一个非常有经验的编码员,这是我的第一个真正的项目。我有其他问题,我在谷歌找到了答案,但这一个让我难过。抛出错误的代码部分工作正常,直到我将os.path.join()命令添加到此行
urllib.request.urlretrive(reddit_image_url, os.path.join('~/t-r_dankmemes__bot/jpg_folder', submission.title + '.jpg'))
现在它抛出了这个错误
Traceback (most recent call last):
File "t-r_dankmemes_bot.py", line 25, in <module>
for submission in hot_dankmemes:
File "/usr/local/lib/python3.6/site-packages/praw/models/listing/generator.py", line 52, in __next__
self._next_batch()
File "/usr/local/lib/python3.6/site-packages/praw/models/listing/generator.py", line 62, in _next_batch
self._listing = self._reddit.get(self.url, params=self.params)
File "/usr/local/lib/python3.6/site-packages/praw/reddit.py", line 367, in get
data = self.request('GET', path, params=params)
File "/usr/local/lib/python3.6/site-packages/praw/reddit.py", line 472, in request
params=params)
File "/usr/local/lib/python3.6/site-packages/prawcore/sessions.py", line 179, in request
params=params, url=url)
File "/usr/local/lib/python3.6/site-packages/prawcore/sessions.py", line 110, in _request_with_retries
data, files, json, method, params, retries, url)
File "/usr/local/lib/python3.6/site-packages/prawcore/sessions.py", line 95, in _make_request
params=params)
File "/usr/local/lib/python3.6/site-packages/prawcore/rate_limit.py", line 32, in call
kwargs['headers'] = set_header_callback()
File "/usr/local/lib/python3.6/site-packages/prawcore/sessions.py", line 139, in _set_header_callback
self._authorizer.refresh()
File "/usr/local/lib/python3.6/site-packages/prawcore/auth.py", line 328, in refresh
password=self._password)
File "/usr/local/lib/python3.6/site-packages/prawcore/auth.py", line 138, in _request_token
response = self._authenticator._post(url, **data)
File "/usr/local/lib/python3.6/site-packages/prawcore/auth.py", line 31, in _post
raise ResponseException(response)
prawcore.exceptions.ResponseException: received 403 HTTP response
对不起,如果这个问题是愚蠢的,正如我所说,除了去年我在学校学习的非常基础的java课程之外,我还不熟悉编码。如果有人也可以解释如何阅读&#34;像这样的错误消息,所以我可以追溯下一次我自己的问题,我将不胜感激。
import praw
import tweepy
import urllib
import os
###reddit API setup (praw)###
reddit = praw.Reddit(client_id = '******', client_secret = ******', username = '*******', password = '******', user_agent = '******')
subreddit = reddit.subreddit('dankmemes')
hot_dankmemes = subreddit.hot(limit = 5)
###twitter API setup (tweepy)###
ckey = '******'
csecret = '******'
akey = '*******'
asecret = '******'
auth = tweepy.OAuthHandler(ckey, csecret)
auth.set_access_token(akey, asecret)
TWEEPYAPI = tweepy.API(auth)
###MAIN###
for submission in hot_dankmemes:
print('Checking ' + submission.title)
if submission.ups >= 5000:
print('Found Post')
print('Checking for image in ' + submission.title)
with urllib.request.urlopen(submission.shortlink) as pageurl:
for line in pageurl:
line = line.decode('utf-8')
if 'data-url=' in line:
print('Found Image')
reddit_image_url = line[line.index('data-url="') + 10:line.index('\" data-permalink=')]
print(reddit_image_url)
urllib.request.urlretrive(reddit_image_url, os.path.join('~/t-r_dankmemes__bot/jpg_folder', submission.title + '.jpg'))
image_path = str('~/t-r_dankmemes_bot/jpg_folder/' + submission.title + '.jpg')
TWEEPYAPI.update_with_media(image_path)
print('Image successfully posted')
break
print('Post did not contain image')
break
谢谢你的时间,特里斯坦:)