我正在尝试使用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/