Hallo, ist es mit urllib oder so möglich, Dateien von einer Webseite zu laden und zu behandeln wie ein lokalen Pfad ("/home/meineDateien")?
Wenn auf einer Webseite in einen Ordner quasi sich mehrere Dateien befinden sie dann in einer Schleife zu laden und zu bearbeiten.
Ich habe bisher nichts treffendes gefunden.
Einen Denkanstoß wäre sehr hilfreich.
Dateien aus einer Webseite laden
- noisefloor
- User
- Beiträge: 3854
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
du lädst die komplette Webseite, in der Regel eine HTML Datei = Text - und dann kannst du damit machen, was Python so her gibt. Also z.B. das HTML mittels eines HTML/XML Parsers durchsuchen.
Wenn du Webseite dynamisch generiert wird, also z.B. Inhalt mittels JavaScript nachträglich eingefügt wird, dann funktioniert der Weg nicht. Dann musst du anders vorgehen.
Was hat du eigentlich vor? Wenn du das mal beschreiben würdest, würde auch vielleicht ein konkreterer Lösungsvorschlag dabei raus kommen.
Gruß, noisefloor
du lädst die komplette Webseite, in der Regel eine HTML Datei = Text - und dann kannst du damit machen, was Python so her gibt. Also z.B. das HTML mittels eines HTML/XML Parsers durchsuchen.
Wenn du Webseite dynamisch generiert wird, also z.B. Inhalt mittels JavaScript nachträglich eingefügt wird, dann funktioniert der Weg nicht. Dann musst du anders vorgehen.
Webseiten kennen keine Ordner und Dateien... Meinst du vielleicht Links auf Dateien?Wenn auf einer Webseite in einen Ordner quasi sich mehrere Dateien befinden
Was hat du eigentlich vor? Wenn du das mal beschreiben würdest, würde auch vielleicht ein konkreterer Lösungsvorschlag dabei raus kommen.
Gruß, noisefloor
Ich habe einen Webdav Server wo ich bestimmte Dateien abgelegt habe, das ist ein Ordner der mehrere Dateien beinhaltet. Die wollte ich "einfach so" wie z.b. mit glob in einer "for-Schleife" durchlaufen lassen.
Ok ich kann aber auch Clientdav py nehmen, das habe ich auch schon mal erfolgreich getestet, aber das muss man erst installieren...
Von daher dachte ich es gibt eine "einfachere" Lösung.
Ich habe es jetzt mit den Code gemacht und das Hilft mir weiter:
Nur weiß ich nicht wo da jetzt der Unterschied ist.
Ok ich kann aber auch Clientdav py nehmen, das habe ich auch schon mal erfolgreich getestet, aber das muss man erst installieren...
Von daher dachte ich es gibt eine "einfachere" Lösung.
Ich habe es jetzt mit den Code gemacht und das Hilft mir weiter:
Code: Alles auswählen
from urllib.request import urlretrieve
import requests
url = "http://192.168.178.55:81/cc"
a = urlretrieve(url, "/home/dell/probe_urlretrieve.txt")
#################################
b = requests.get(url)
with open("/home/dell/probe_requests.txt", "wb") as code:
code.write(b.content)
Ein Außenstehender leider auch nicht, da 192.168.178.* zum privaten Adressbereich gehört (z.B. für Router) und somit nicht beurteilt werden kann, was da bei dir heraus kommt. Generell kann requests halt automatische Weiterleitungen, Fehlerbehandlungen, einfaches Mitgeben von Headern, usw. Mit Python-Boardmitteln ist es auch möglich, erfordert aber mehr Code und mehr Mitdenken seitens des Programmierers.
- noisefloor
- User
- Beiträge: 3854
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Ansonsten kannst du unter Linux WebDAV via FUSE als Dateisystem einbinden, dann hast du darauf Zugriff wie auf eine lokale Festplatte etc.
Gruß, noisefloor
Wenn's ein fertiges Python-Modul gibt, welches eine brauchbare API hat, dann ist das immer einfacher als ein DIY Lösung.Von daher dachte ich es gibt eine "einfachere" Lösung.
Ansonsten kannst du unter Linux WebDAV via FUSE als Dateisystem einbinden, dann hast du darauf Zugriff wie auf eine lokale Festplatte etc.
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 13077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Kann man unter Windows nicht auch WebDAV als Laufwerk einbinden? Ich dachte ich hätte so etwas schon mal irgendwo gesehen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Also das mit Webdav ist mir bekannt, hab ich so in der Form schon mal gemacht (linux).
Jetzt ist die Frage was der Unterschied zwischen "urlretrieve" und "requests.get" ist.Beides funktioniert bei mir gleich.
Und die private IP ist jetzt nur zum Test.
Edit:
OT on:
Bei linux hänge ich das entfernte webdav Verzeichnis mittels "dafs" in ein Verzeichnis ein und wird so behandelt, als ob es lokal wäre.
OT off
Jetzt ist die Frage was der Unterschied zwischen "urlretrieve" und "requests.get" ist.Beides funktioniert bei mir gleich.
Und die private IP ist jetzt nur zum Test.
Edit:
OT on:
Bei linux hänge ich das entfernte webdav Verzeichnis mittels "dafs" in ein Verzeichnis ein und wird so behandelt, als ob es lokal wäre.
OT off
- __blackjack__
- User
- Beiträge: 13077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@egon11: `requests.get()` lädt den gesamten Inhalt auf einmal in den Speicher wenn man da nicht explizit sagt, dass man a) „streaming“ möchte, und b) nicht `Response.iter_content()` verwendet um die Antwort vom Server in Blöcken zu lesen.
`a` und `b` sind nicht so wirklich tolle Namen. `a` verwendest Du ausserdem gar nicht.
`a` und `b` sind nicht so wirklich tolle Namen. `a` verwendest Du ausserdem gar nicht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman