2016-11-19 6 views
2

Ich versuche Stockcharts.com für das Diagramm Bild von einer URL zu kratzen. Zum Beispiel: http://stockcharts.com/h-sc/ui?s=AMZNwebscrapping ein Bild mit Python aber kann nicht gefunden Bild

Bei der Untersuchung des fraglichen Elements handelt es sich jedoch nicht um ein richtiges Bild src mit dem Suffix .jpg, .png usw. Zum Beispiel in Frage das Element aus dem obigen Link lautet: http://stockcharts.com/c-sc/sc?s=AMZN&p=D&b=5&g=0&i=0&r=1479451634864

und deshalb, wenn ich versuche, den folgenden Code in Python verwenden 2.7, erhalte ich eine leere Datei im Verzeichnis teilt das Skript:

import urllib 
url = "http://stockcharts.com/c-sc/sc?s=AMZN&p=D&b=5&g=0&i=0&r=1479451634864" 
filename = "testimg.jpg" 
urllib.urlretrieve(url, filename) 

Ist das eine JavaScript-Seite, oder gibt es etwas, das ich vermisse? Ein Verweis auf anderswo?

Antwort

-1

Die Website überprüft User-Agent Header; Es erlaubt nur bestimmte Benutzer-Agenten.

Sie müssen die Kopfzeile ändern, um das Bild abzurufen. Andernfalls gibt die Site eine 403 Forbidden-Antwort zurück.

urllib.urlretrieve akzeptiert keine zusätzliche Header, müssen Sie urllib2.urlopen/urllib2.Request verwenden, um benutzerdefinierte Header angeben und Datei selbst speichern:

import urllib2 

url = "http://stockcharts.com/c-sc/sc?s=AMZN&p=D&b=5&g=0&i=0&r=1479451634864" 
filename = "sc.png" 
req = urllib2.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) 
u = urllib2.urlopen(req) 
with open(filename, 'wb') as f: 
    f.write(u.read()) 
+0

@downvoter: Wie kann ich die Antwort zu verbessern? Bitte lassen Sie mich wissen, was mit der Antwort nicht stimmt. – falsetru

+1

@JRodDynamite, Danke für die englischen Korrekturen. – falsetru

+0

Ich nehme an, Sie haben Windows 7 64 Bit wie ich. Ich klicke auf den Link in deinem ersten Satz und erhalte eine neue Seite mit dem Diagramm. Ich rechts auf das Diagramm und wählen Sie "Speichern unter" und der Dateiname der Bilddatei ist "sc.png" nicht "testimg.jpg" – Marichyasana

Verwandte Themen