2016-07-04 11 views
-2

Ich versuche, eine .csv-Datei von einer URL mit Python zu bekommen. Wenn ich die URL in einem Browser verwende, bekomme ich die CSV-Datei heruntergeladen, aber wenn ich dieses Skript verwende, bekomme ich nur HTML-Code.Get .csv-Datei mit Python von der URL

__file_url__ = "http://myurl.com/?export" 
data = urllib2.urlopen(__file_url__) 
     for line in data: 
      print(line) 

Danke für alle Hilfe!

+1

Dies ist ein serverseitiges Problem. Ihr Server variiert die Antworten nach etwas, und wir wissen nicht, was passiert. Es könnten Cookies sein, es könnte der 'User-Agent'-Header sein, es könnte die Phase des Mondes sein. Dies ist * kein * Python-spezifisches Problem. –

+0

Oh, ok ... nun, das würde das dynamische Dateibenennungsding erklären. Also kann ich diese Datei nicht mit Python erhalten? –

+1

Sie können wahrscheinlich, aber Sie müssen herausfinden, welche magische Kombination von Headern der Server variiert. Ich würde anfangen, mit den Headern zu spielen, die dein Browser sendet, und zu sehen, welche der Python-Anfrage hinzugefügt wurde, macht einen Unterschied. –

Antwort

0

Ich bin super dumm. Sie müssen angemeldet sein, um dies herunterladen zu können. Und natürlich, als ich die Anfrage von Python anrief, war ich nicht eingeloggt. Also musste ich die Session aus der Anfrage lib verwenden, um zuerst ein Login-Formular zu posten und dann erneut nach der Datei zu fragen und wiola - da ist meine Datei.

from requests import session 
s = session() 
s.post('http://myurl.com/login', data = { 'username': 'myusername', 'password': 'mypassword' }) 
download = s.get('http://myurl.com/?export')