urllib and 'HTTPError: Bad Request'

urllib and 'HTTPError: Bad Request'

我需要以 JSON 字符串和 return 前 250 个字符的形式访问 Twitter 用户的时间线。

Twitter1.py:

import urllib.request, urllib.parse, urllib.error
import twurl
import ssl

TWITTER_URL = 'https://api.twitter.com/1.1/statuses/user_timeline.json'

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('Remaining', headers['x-rate-limit-remaining'])

输出中出现与 urllib 相关的错误:

Enter Twitter Account:jack
...
Traceback (most recent call last):

  File "C:\Users\User\...\twitter1.py", line 18, in <module>
    connection = urllib.request.urlopen(url, context=ctx)

  File "C:\Users\User\anaconda3\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)

  File "C:\Users\User\anaconda3\lib\urllib\request.py", line 531, in open
    response = meth(req, response)

  File "C:\Users\User\anaconda3\lib\urllib\request.py", line 641, in http_response
    'http', request, response, code, msg, hdrs)

  File "C:\Users\User\anaconda3\lib\urllib\request.py", line 569, in error
    return self._call_chain(*args)

  File "C:\Users\User\anaconda3\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)

  File "C:\Users\User\anaconda3\lib\urllib\request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)

HTTPError: Bad Request

我无法找出问题的根源。语法看起来正确,并且正确的 API 信息被输入到单独的 python 文件 'hidden.py' 中。 twurl 和 oauth 从 twurl.py 和 oauth.py 导入以访问数据(包括在下面)。 hidden.py 只是在函数 oauth() 中 returns 我的 API 信息 JSON 并且 oauth 是众所周知的,因此它也被排除在外。任何指导将不胜感激。

twurl.py:

import urllib.request, urllib.parse, urllib.error
import oauth
import hidden

def augment(url, parameters):
    secrets = hidden.oauth()
    consumer = oauth.OAuthConsumer(secrets['consumer_key'],
                                   secrets['consumer_secret'])
    token = oauth.OAuthToken(secrets['token_key'], secrets['token_secret'])

    oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer,
                    token=token, http_method='GET', http_url=url,
                    parameters=parameters)
    oauth_request.sign_request(oauth.OAuthSignatureMethod_HMAC_SHA1(),
                               consumer, token)
    return oauth_request.to_url()

跟进:我发布后很快就解决了,问题是关于域被防病毒过滤器阻止的问题。