Bilder einer Liste mit URL automatisch downloaden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Hallo,
ich bin heute auf dieses Forum (und überhaupt das Thema "Python") gestoßen, da ich zur Zeit eine Lösung für ein Problem suche.

Und zwar habe ich eine CSV-Datei, in welcher unter anderem in einer bestimmten Spalte jeweils eine Bild-URL steht.

Diese Bilder möchte ich automatisch runterladen.

Auf das Thema Python bin ich jetzt durch ein anders Forum (dort geht es nicht um das Programmieren) gekommen. Ein Mitglied dort hatte ein ähnliches Problem / Vorhaben und hat dies mit einem Python-Code gelöst.
Ich habe dieses Mitglied bereits um Unterstützung gebeten und auch einen "py-Code" und erste Hilfestellungen bekommen. Allerdings funktionierte das ganze bislang noch nicht und das Mitglied ist derzeit offenbar nicht erreichbar.

Kann mir jemand hier aus der Runde bei der Lösung meines Anliegens helfen?

VG Gonzo
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann zeig doch mal deine ‚py-Code‘, deine CSV Datei, und welche Fehler du bekommst oder eine ausführliche Beschreibung dessen, was da nicht funktioniert.
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@gonzo900: Zum einlesen und Parsen von CSV-Dateien gibt es in der Standardbibliothek das `csv`-Modul. Zum herunterladen aus dem Netz würde ich das externe `requests`-Modul empfehlen, man kann das aber auch mit dem `urllib.request`-Modul aus der Standardbibliothek lösen. Für die Python-Grundlagen gibt es in der Python-Dokumentation ein Tutorial. Ansonsten kann man ohne konkretere Fragen, keine konkreteren Antworten geben.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Hallo @__blackjack__ @__deets__

vielen Dank für Eure Antworten.

__blackjack__ hat geschrieben: Samstag 30. November 2019, 15:32 @gonzo900: Zum einlesen und Parsen von CSV-Dateien gibt es in der Standardbibliothek das `csv`-Modul. Zum herunterladen aus dem Netz würde ich das externe `requests`-Modul empfehlen, man kann das aber auch mit dem `urllib.request`-Modul aus der Standardbibliothek lösen. Für die Python-Grundlagen gibt es in der Python-Dokumentation ein Tutorial. Ansonsten kann man ohne konkretere Fragen, keine konkreteren Antworten geben.
Das ganze sind leider komplett "böhmische Dörfer" für mich :?
__deets__ hat geschrieben: Samstag 30. November 2019, 14:17 Dann zeig doch mal deine ‚py-Code‘, deine CSV Datei, und welche Fehler du bekommst oder eine ausführliche Beschreibung dessen, was da nicht funktioniert.
Kann ich hier irgendwo Dateien im Beitrag anhängen? Ich finde leider keine entsprechende Funktion.
Oder kann / sollte ich sie Dir so schicken?

LG Gonzo
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du kannst den Code hier einkopieren, und ihn mit dem Code-Tag Button (</> im vollständigen Editor) lesbar machen. Ohne das geht’s nicht.
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Hallo nochmal,

ich versuche mal, den py-Code und die CSV als Link einzufügen.

Als py-Code hat das Mitglied aus dem anderen Forum mir dies zur Verfügung gestellt:
https://master.tus.io/files/7f8e123643e ... ADOhSrKPa4

Die CSV-Datei ist diese:
Datei von filehorst.de laden
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Hi @__deets__
__deets__ hat geschrieben: Samstag 30. November 2019, 16:48 Du kannst den Code hier einkopieren, und ihn mit dem Code-Tag Button (</> im vollständigen Editor) lesbar machen. Ohne das geht’s nicht.
einen Code habe ich nicht von ihm bekommen, er hat mir einen Link geschickt (https://master.tus.io/files/7f8e123643e ... ADOhSrKPa4). Dort habe ich eine ".py - Datei ("Tool.py") heruntergeladen.

Diese Datei habe ich in einen Ordner kopiert. In diesem Ordner habe ich einen Ordner für die gedownloadeten Bilder erstellt und die CSV-Datei mit den ganzen Bild-URLs kopiert.
So hatte er mir das beschrieben.

Danach sollte ich bei meinem Mac das Terminal öffnen und der "python3 PFAD DER EXPORT-DATEI" eingeben.

Allerdings erscheint dann im Terminal diese Fehlermeldung:


Traceback (most recent call last):
File "/Users/brittabaumgart/Desktop/Bildersicherung/Tool.py", line 6, in <module>
with open('export1.csv') as csvfile:
FileNotFoundError: [Errno 2] No such file or directory: 'export1.csv'
Brittas-iMac:~ brittabaumgart$



Die Datei mit den URLs heißt allerdings "export1.csv"

LG Gonzo
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der User hat einen Fehler gemacht. Das Programm erwartet kein Argument, sondern hat das hart kodiert. Das hier sollte so funktionieren wie beschrieben:

Code: Alles auswählen

import csv
import urllib.request
from urllib.request import urlopen
import cgi
import sys

with open(sys.argv[1]) as csvfile:
    reader = csv.reader(csvfile, delimiter=';', quotechar='|')
    for row in reader:

        fileurl = row[0] #Link zum Herunterladen (Muss http, nicht https)
        filepos = row[1] #erstes zweites oder drittes bild

        remotefile = urlopen(fileurl)
        blah = remotefile.info()['Content-Disposition']
        value, params = cgi.parse_header(blah)
        filename = params["filename"]

        urllib.request.urlretrieve(fileurl,"/Bilder/" + filepos + filename)
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Wie muss ich diesen Code jetzt behandelt? Bei Python einfügen und als neue .py-Datei abspeichern?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Als neue Datei abspeichern. Sowie doch vorher auch, der Code war ja auch aus nem Forum. Und dann so behandeln wie der ursprüngliche Autor es beschreibt. Dessen Fehler habe ich ja hoffentlich behoben.
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Jetzt bekomme ich eine andere Fehlermeldung:

Last login: Sat Nov 30 16:55:02 on ttys000
Brittas-iMac:~ brittabaumgart$ python3 /Users/brittabaumgart/Desktop/Bildersicherung/Tool1.py
Traceback (most recent call last):
File "/Users/brittabaumgart/Desktop/Bildersicherung/Tool1.py", line 7, in <module>
with open(sys.argv[1]) as csvfile:
IndexError: list index out of range
Brittas-iMac:~ brittabaumgart$
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@gonzo900: Beim Start des Programms fehlt jetzt noch der Dateiname (ggf. mit Pfad) zu der CSV-Datei.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja. Da ist ja auch nicht die Anweisung befolgt worden, und der Pfad der Datei als Argument angegeben worden.

python Skript.py Pfad/zu/export.csv
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Hi @__deets__ @__blackjack__

der Auto des ursprünglichen Codes hatte in seiner Anweisung gestern geschrieben, dass der Pfad der .py-Datei im Terminal eingegeben werden soll, also:

"python3 /Users/brittabaumgart/Desktop/Bildersicherung/Tool1.py"

Richtig wäre?:

"python3 /Users/brittabaumgart/Desktop/Bildersicherung/export1.csv"

Sorry, kenne mich da echt absolut nicht aus :((

LG
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Ich habe das jetzt mal geändert auf ""python3 /Users/brittabaumgart/Desktop/Bildersicherung/export1.csv"

Jetzt ist die neue Fehlermeldung

Last login: Sat Nov 30 18:33:45 on ttys000
Brittas-iMac:~ brittabaumgart$ python3 /Users/brittabaumgart/Desktop/Bildersicherung/export1.csv
File "/Users/brittabaumgart/Desktop/Bildersicherung/export1.csv", line 1
http://cdn02.plentymarkets.com/nvj4zzvi ... 0372.JPG;0
^
SyntaxError: invalid syntax
Brittas-iMac:~ brittabaumgart$
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein. So wie ich schon schrieb.

python skript.py Pfad/zur/Export.csv

Es muss doch angegeben werden, WO die Datei liegt.
gonzo900
User
Beiträge: 24
Registriert: Samstag 30. November 2019, 13:29

Hallo __deets__

ich habe das jetzt beim letzten Versuch so gemacht:

"python3 /Users/brittabaumgart/Desktop/Bildersicherung/export1.csv"

(/Users/brittabaumgart/Desktop/Bildersicherung/export1.csv ist der Pfad zu meiner Export-Datei)

Die Fehlermeldung ist:

Last login: Sat Nov 30 18:33:45 on ttys000
Brittas-iMac:~ brittabaumgart$ python3 /Users/brittabaumgart/Desktop/Bildersicherung/export1.csv
File "/Users/brittabaumgart/Desktop/Bildersicherung/export1.csv", line 1
http://cdn02.plentymarkets.com/nvj4zzvi ... 0372.JPG;0
^
SyntaxError: invalid syntax
Brittas-iMac:~ brittabaumgart$
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

@ gonzo900
__deets__ hat es doch schon geschrieben wie es geht🤷‍♂️
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Ich glaube er sollte sich erstenmal über die Grundlagen von Python, sowie über das Modul "requests" und, von jackblack bereits erwähnt, das "csv" Modul informieren.

Es bringt dir mehr Erfolg nicht alles machen zu lassen, sondern selbst etwas zu versuchen.
Benutzeravatar
__blackjack__
User
Beiträge: 14051
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@gonzo900: Und das ist immer noch falsch. Das besteht aus *drei* Teilen. Dem Programm das ausgeführt werden soll (Python), der Python-Datei die von Python ausgeführt werden soll, und dem Dateinamen der CSV-Datei.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten