2016-03-29 16 views
0

Ich versuche, eine Website zu scrappen, aber mein Code funktioniert nur, wenn ich die Website geöffnet habe und dann aktualisieren. Ich habe mehrere Dinge ausprobiert und halten die beiden folgenden Fehler kommen: Die erste: Valueerror: „httperror: HTTP-Fehler 416: Angeforderte Bereich nicht erfüllbar“Python Scrape urllib2 HTTP-Fehler

urlslist = open("list_urls.txt").read() 
urlslist = urlslist.split("\n") 
for urlslist in urlslist: 

htmltext = urllib2.urlopen("www..."+ urlslist) 
data = json.load(htmltext) 

Ich habe auch versucht, einige Header verwenden und solche, sondern bekommen der Fehler 'ValueError: Kein JSON-Objekt konnte decodiert werden':

req = urllib2.Request('https://www....) 
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36') 

htmltext = urllib2.urlopen(req) 
data = json.load(htmltext) 

Ich bin ratlos, jede Hilfe?

+0

Warum "www ..."? Ist das dein Code? –

+0

Bitte lesen Sie http://stackoverflow.com/help/mcve. – boardrider

+0

die URL ist: http://www.stubhub.com/beyonce-tickets-beyonc--san-diego-qualcomm-stadion-5-12-2016/event/9519801/ – sky44

Antwort

-1

Wenn Sie eine URL anfordern, müssen Sie auch den Teil "http (s): //" einfügen. Unter der Annahme, dass die Textdatei müssen Sie nur noch enthält den „name.com“ Teil der URL (zB statt https://www.google.com, Ihre Textdatei hat google.com), dies ist der Code benötigen Sie:

htmltext = urllib2.urlopen("https://www." + urlslist) 

Wenn die url ist der stubhub.com (wie du in deinem Kommentar erwähnt hast), du brauchst das "s" nicht. Es wäre dies stattdessen sein:

htmltext = urllib2.urlopen("http://www." + urlslist) 

Der json Fehler kann einfach auf die Tatsache zurückzuführen sein, dass es keine JSON-Dateien zu laden. Sie müssen sich das Entwicklerfenster ansehen und sicherstellen, dass Dateien im JSON-Format importiert werden.