我是一个在Freecodecamp.com上学习python基础课程的初学者。我使用的是Mac操作系统python3.10。
我正在尝试使用http请求连接到twitter的API,收集数据,然后解析这些数据。
我创建了一个twitter开发者帐户,得到了我的密钥和代币以及所有这些东西。
这里有一个链接,指向我正在处理的确切问题(向下滚动到粗体显示"应用程序2:Twitter"的位置(。
这是我试图运行的代码:
import urllib.request, urllib.parse, urllib.error
import twurl
import ssl
# https://apps.twitter.com/
# Create App and get the four strings, put them in hidden.py
TWITTER_URL = 'https://api.twitter.com/1.1/statuses/user_timeline.json'
# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
while True:
print('')
acct = input('Enter Twitter Account:')
if (len(acct) < 1): break
url = twurl.augment(TWITTER_URL,
{'screen_name': acct, 'count': '2'})
print('Retrieving', url)
connection = urllib.request.urlopen(url, context=ctx)
data = connection.read().decode()
print(data[:250])
headers = dict(connection.getheaders())
# print headers
print('Remaining', headers['x-rate-limit-remaining'])
这是代码返回的错误:
Enter Twitter Account:drchuck
Retrieving https://api.twitter.com/1.1/statuses/user_timeline.json?oauth_consumer_key=9uxUyq33IRxCL5CZf7LyfubX3&oauth_timestamp=1641148177&oauth_nonce=80764354&oauth_version=1.0&screen_name=drchuck&count=2&oauth_token=1423673018467983360-Tg6vMoRAWO7FCgnGKhz9WgrPUoCsZa&oauth_signature_method=HMAC-SHA1&oauth_signature=C%2FQIvEhgZ8AQQooC4E%2BekJSZwjE%3D
Traceback (most recent call last):
File "/Users/jguinn/env/twtr-api-demo/twitter1.py", line 23, in <module>
connection = urllib.request.urlopen(url, context=ctx)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 525, in open
response = meth(req, response)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 634, in http_response
response = self.parent.error(
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 563, in error
return self._call_chain(*args)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 496, in _call_chain
result = func(*args)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/urllib/request.py", line 643, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
我在推特开发者网站上寻找有关响应代码的信息,推特说403:禁止代码意味着:
"请求已被理解,但已被拒绝或无法访问允许。附带的错误消息将解释原因">
作为他们建议的解决方案:
"检查您的开发人员帐户是否包括对端点的访问权限你正在尝试使用。您可能还需要列出您的应用程序许可(例如,参与API或广告API(或注册访问">
我真的不确定这意味着什么。如有任何帮助,我们将不胜感激。谢谢
我不知道你是否已经解决了这个问题,但以下是我的做法。
你必须在twitter上的开发者门户网站上申请提升访问权限。这是一个非常顺利的过程,一旦你做到了,你就会变得很好。
问题不在于代码,代码是绝对正确的。
第一步:在Twitter 上注册一个开发者帐户
第二步:升级到高架接入(免费(
第三步:生成APT密钥、API密钥、访问令牌和Acess令牌密钥
唯一需要更改的是hidden.py文件中的consumer_key、consumer_secret、token_key和token_secret。(consumer_key=API密钥,consumer_secret=API密钥机密,token_key=访问令牌,token_secret=访问令牌机密(