Seite 1 von 1
datei von urllib2 downloaden
Verfasst: Montag 8. Juni 2009, 15:00
von bcit6k
Hallo,
ich rufe mit meinem python script eine url mit php datei auf. Diese php Datei generiert eine PDF Dati, die dann normalerweise an den browser gesendet wird.
wenn ich dei seite mit dem browser öffne kommt die mdelung zum download, bzw. wo ich die pdf datei dann hinspecihern möchte.
wie kann ich das mit urllib2 abfangen? so das ich mit python den datenstream empfangen und abspeichern kann?
danke
Verfasst: Montag 8. Juni 2009, 15:15
von EyDu
Dann musst du zunächst die URL der Datei bekommen. Wenn du Glück hast, kommst du ganz leicht mit einem HTML-/XML-Parser ran (wirf dazu einen Blick in die Dokumentation). Bei JavaScript dürfte das etwas komplizierter werden.
Jetzt ist nur noch zu klären, was genau du mit "Abfangen" meinst: willst du wirklich die Daten die Geschickt werden (inklusive HTTP-Header, ...), nur die Daten der Datei oder die Datei einfach nur irgendwo speichern?
Verfasst: Montag 8. Juni 2009, 15:25
von bcit6k
hi,
das php script schreibt den header der datei schon. also ich würde wenn ich das im browser aufrufe direkt die datei empfangen, ohne das sich eine website öffnet.
ich möchte einfach die datei die da ausgegeben wird abspeichern, mit dem namen der ihr bereits vergeben wurde.
also z.b.: testfile_1.pdf
mit php schreib ich meinen header so
Code: Alles auswählen
header("Content-type: application/octet-stream;" );
header('Content-Disposition: attachment; filename="export_testfile_1.pdf"');
header('Content-Disposition: attachment; filename="export_testfile_1.pdf"');
header("Pragma: private");
header('Cache-control: private, must-revalidate');
print "$header\n$dfw_data";
im grunde müsst ich nur den datenstream in ein file umleiten aber wie? und vor allem wie krieg ich den filename heraus!
Verfasst: Montag 8. Juni 2009, 15:43
von EyDu
Ich kopiere mal aus der Dokumentation zu urllib2 zum Einlesen einer Seite:
Code: Alles auswählen
>>> import urllib2
>>> req = urllib2.Request(url='https://localhost/cgi-bin/test.cgi')
>>> f = urllib2.urlopen(req)
>>> print f.read()
Wenn du an die Header-Daten möchtest, dann schau dir mal an, was die info-Methode von Request liefert.
Edit: Fast vergessen: vielleicht reicht dir ach schon die Funktion "urllib.urlretrieve" aus.