URLLIB2不起作用,HTTP禁止错误



我正在尝试使用yts api,我写了以下代码。

import urllib2
import json
url = 'https://yts.ag/api/v2/list_movies.json?quality=3D'
json_obj = urllib2.urlopen(url)
data = json.load(json_obj)
print data

,但我遇到了以下错误:

File "<stdin>", line 1, in <module>
  File "C:Python27liburllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "C:Python27liburllib2.py", line 435, in open
    response = meth(req, response)
  File "C:Python27liburllib2.py", line 548, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:Python27liburllib2.py", line 473, in error
    return self._call_chain(*args)
  File "C:Python27liburllib2.py", line 407, in _call_chain
    result = func(*args)
  File "C:Python27liburllib2.py", line 556, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden

帮助我如何修复此

我不完全确定您的urllib2请求发生了什么,因为它可以与我测试的其他URL一起使用,也没有JSON响应。

我怀疑这是质量= 3D查询的编码内容,但是我对处理的简短尝试也失败了。

简单地将请求放入浏览器中,以及以下"请求"代码。

简而言之,我并没有真正回答您有关修复URLLIB2使用情况的问题,但绝对可以解决获取数据的问题。

在这种情况下,我建议使用"请求"模块。尝试

import requests
import json
url = 'https://yts.ag/api/v2/list_movies.json?quality=3D'
response = requests.get( url = url )
data = response.json()
print data

请注意,请求响应。JSON()为您处理JSON.LOAD()。

它将在urllib2上节省许多头痛。

"请求"文档:http://docs.python-requests.org/en/latest/

最新更新