Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

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.
Antworten
omux
User
Beiträge: 2
Registriert: Donnerstag 20. August 2020, 16:16

Hallo Leute,

ich bin noch ganz am Anfang und versuche gerade mein erstes richtiges Tool zu schreiben.
Durch googeln konnte ich mein Problem irgendwie nicht lösen obwohl das Problem wahrscheinlich ganz einfach zu beheben ist.
Villeicht kann mir da jemand von euch helfen, würde mich sehr freuen.

Habe einen Webscraper mit BeautifulSoup geschrieben und möchte jetzt einen Ordner mit dem gescrapten Artikelnamen als Ordnername zu erstellen.
Der Ordner soll in dem Directory erstellt werden in dem gerade gearbeitet wird, habe es schon auf verschiedene Methode wie z.B. die unten versucht aber bekomme es irgendwie nicht hin.

Einer der Versuche:

Code: Alles auswählen

insname = soup.head.title.text
os.mkdir(insname)
Der Fehler:

Code: Alles auswählen

OSError                                   Traceback (most recent call last)
<ipython-input-43-3e0eca5c3866> in <module>
      1 insname = soup.head.title.text
----> 2 os.mkdir(insname)

OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'MacBook Pro 13" (Mid 2012) | inkl. Ladekabel und Originalverpackung, € 300,- (1090 Wien) - willhaben'
LG omux
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Du versuchst einen Ordner zu erstellen mit einem Namen der sehr wahrscheinlich nicht vom Dateisystem unterstützt wird 8)
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Die erlaubten Zeichen unter Windows sind sehr eingeschränkt, hier ist das | das Problem.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das ist auch nicht ganz ungefährlich irgendwelche Daten die aus einer Webseite gescraped sind, einfach so als Pfad + Dateiname für Dateioperationen zu verwenden. Was wenn da jemand "C:\\temp\\ordnername" in den <title> schreibt? Oder einen relativen Pfad der über das aktuelle Arbeitsverzeichnis zeigt "..\..\ordnername". Und der Inhalt vom <title> muss über mehrere HTML-Dokumente hinweg nicht eindeutig sein, auch wenn die ansonsten nicht die gleichen Daten enthalten.

Es wäre sicherer den Ordnernamen einen eindeutigen Präfix zu verpassen, beispielsweise eine UUID und die Namen selbst mit einer Positivliste von erlaubten Zeichen zu säubern.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
omux
User
Beiträge: 2
Registriert: Donnerstag 20. August 2020, 16:16

Perfekt,vielen dank für die schnelle HIlfe :)
Antworten