Seite 1 von 1
Website als HTML Datei ablegen
Verfasst: Montag 8. Juni 2015, 16:33
von b4shyou
Hey Leute,
ich soll aus einer formularübergebenen URL den Quelltext (nur HTML) als html Datei abspeichern.
als erstes hab ich mir überlegt, die Seite erstmal aufzurufen
Code: Alles auswählen
#!/usr/bin/python3
import cgi
import urllib.request
form = cgi.FieldStorage()
f1 = form["url"].value
f2 = form["name"].value
website = f1
print(website)
t = urllib.request.urlopen(website)
print(t.read())
Nun weiß ich allerdings nicht, wie ich diesen Aufruf nun als HTML Datei speichern kann.
Wäre cool wenn jemand einen Tipp hätte =)
LG
Marci
Re: Website als HTML Datei ablegen
Verfasst: Montag 8. Juni 2015, 16:37
von mutetella
b4shyou hat geschrieben:Nun weiß ich allerdings nicht, wie ich diesen Aufruf nun als HTML Datei speichern kann.
Letztlich ist 'ne html Datei ja auch "nur" eine Textdatei, in die Du die ``read()`` Rückgabe schreibst.
mutetella
Re: Website als HTML Datei ablegen
Verfasst: Montag 8. Juni 2015, 16:46
von b4shyou
also ich hab es jetzt mal so versucht
Code: Alles auswählen
#!/usr/bin/python3
import cgi
import urllib.request
form = cgi.FieldStorage()
f1 = form["url"].value
f2 = form["name"].value
website = f1
name = f2
print(website)
t = urllib.request.urlopen(website)
print(t.read())
ndatei = open("/Pfad zur Datei"+name+".html", "w")
ndatei.write(t)
ndatei.close()
LG
Marci
Re: Website als HTML Datei ablegen
Verfasst: Montag 8. Juni 2015, 17:49
von mutetella
@b4shyou
Und es hat nicht funktioniert, oder?
mutetella
Re: Website als HTML Datei ablegen
Verfasst: Montag 8. Juni 2015, 19:44
von b4shyou
Nein es hat nicht geklappt
aber er hat immerhin eine leere HTML Datei mit dem übergebenem Namen erstellt

Re: Website als HTML Datei ablegen
Verfasst: Montag 8. Juni 2015, 21:01
von BlackJack
@b4shyou: Und es gab eine Ausnahme die im Fehlerprotokoll vom Webserver stehen sollte.
Re: Website als HTML Datei ablegen
Verfasst: Montag 8. Juni 2015, 21:32
von jens
Der letzte code macht aber auch kleinen Sinn... Vergl. Print und write

Re: Website als HTML Datei ablegen
Verfasst: Dienstag 9. Juni 2015, 09:36
von mutetella
@b4shyou
Um es für Dich etwas abzukürzen:
- ``t.read()`` liefert Dir seit Python 3 bytes. Wenn Du diese bytes in eine Datei schreiben möchtest, musst Du diese Datei im binary mode öffen, siehe dazu die Dokumentation.
- Das Schließen der Datei kannst Du Dir sparen, wenn Du Dir angewöhnst, Dateien über das with statement zu öffnen. Damit stellst Du auch sicher, dass die Datei auch in Ausnahmefällen geschlossen wird:
Code: Alles auswählen
with open('any.html', 'wb') as html_file:
html_file.write(response.read())
- Du solltest aussagekräftigere Namen verwenden. `t`, `name`, `ndatei` etc. sind Namen, die anderen, die Deinen Code lesen und verstehen wollen nichts sagen. Und Dir später einmal auch nichts...

- Um einen gültigen Dateinamen samt Pfadangabe zu erstellen, empfiehlt sich os.path.join:
Code: Alles auswählen
>>> os.path.join('/Pfad zur Datei', 'datei.html')
'/Pfad zur Datei/datei.html'
mutetella
Re: Website als HTML Datei ablegen
Verfasst: Dienstag 9. Juni 2015, 17:36
von b4shyou
Vielen Dank an alle Antworter =)
Ich werd es morgen weiterversuchen und euch auf dem laufenden halten.
Auf das Fehlerprotokoll habe ich leider keinen Zugriff
LG
Marci
Re: Website als HTML Datei ablegen
Verfasst: Dienstag 9. Juni 2015, 21:47
von jens
b4shyou hat geschrieben:Auf das Fehlerprotokoll habe ich leider keinen Zugriff
https://docs.python.org/3.4/library/cgitb.html 