Urllib2无效,http禁止错误

时间:2016-12-25 22:57:42

标签: python

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

帮我解决这个问题

1 个答案:

答案 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/