2016-12-25 2 views
0

Ich versuche, die YTS API zu verwenden, und ich schrieb den folgenden Code.Urllib2 funktioniert nicht, HTTP verboten Fehler

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 

Aber ich lief in den folgenden Fehler:

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 

Helfen Sie mir, wie diese

zu beheben
+1

möglich Duplikat: http://stackoverflow.com/questions/13303449/urllib2-httperror-http-error-403-forbidden – UnholySheep

Antwort

1

Ich bin mir nicht ganz sicher, was mit Ihrem urllib2 Antrag auf geht, wie es gut funktioniert mit den anderen URLs, die ich getestet habe, mit und ohne JSON-Antworten.

Ich vermute, es ist eine Codierung für die Qualität = 3D-Abfrage, aber meine kurzen Versuch der Handhabung, die auch fehlgeschlagen.

Einfach die Anfrage in einen Browser zu stellen funktioniert, genauso wie der folgende "Anfrage" -Code.

Kurz gesagt, beantworte ich nicht wirklich Ihre Frage in Bezug auf die Verwendung von urllib2, sondern definitiv das Problem, die Daten zu bekommen.

Ich würde vorschlagen, in diesem Fall mit dem Modul "Anfragen" zu arbeiten. Versuchen Sie

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 

Beachten Sie, dass die Anforderungen response.json() behandelt die json.load() für Sie.

Es wird Ihnen viele Kopfschmerzen über Urllib2 ersparen.

Die Anfragen 'Dokumentation: http://docs.python-requests.org/en/latest/

Verwandte Themen