2016-12-25 4 views
0

yts apiを使用しようとしていて、次のコードを書きました。Urllib2が動作しない、httpが禁止されているエラー

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 

は、それが正常に動作として、私は、あなたのurllib2のリクエストで何が起こっているか完全にわからないんだけど、この

+1

が重複する可能性:http://stackoverflow.com/questions/13303449/urllib2-httperror-http-error-403-forbidden – UnholySheep

答えて

1

を修正する方法私を助けて私がテストした他のURLと、JSONレスポンスの有無にかかわらず。

私はそれがquality = 3Dクエリのエンコーディングだと思っていますが、それを処理する簡単な試みも失敗しました。

次の '要求'コードと同様に、ブラウザにリクエストを入力するだけで動作します。

一言で言えば、私は本当にあなたの質問に答えているわけではありませんが、urllib2の使用方法を修正していますが、データを取得するという問題を確実に修正しています。

この場合、「要求」モジュールを使用することをおすすめします。試してみてください。response.json()リクエストがあなたのためにjson.load()を処理することに注意してください。

これはurllib2よりも多くの頭痛を軽減します。

の要求 "ドキュメント: http://docs.python-requests.org/en/latest/

関連する問題