我正在尝试使用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:\Python27\lib\urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 435, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 548, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 473, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 407, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 556, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
帮我解决这个问题
答案 0 :(得分:1)
我不完全确定你的urllib2请求是什么,因为它可以与我测试的其他网址一起使用,无论是否有JSON响应。
我怀疑它是质量= 3D查询的编码问题,但我处理该问题的简短尝试也失败了。
只需将请求放入浏览器就可以了,以下“&#39;请求&#39;代码。
简而言之,我并没有真正回答有关修复urllib2使用的问题,但肯定解决了获取数据的问题。
我建议使用“请求”&#39;在这种情况下的模块。尝试
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
请注意,request response.json()会为您处理json.load()。
它会比urllib2更让你头疼。
&#39>要求&#39;文档: http://docs.python-requests.org/en/latest/