[Errno 21] Is a directory: 'imgs/'

Probleme bei der Installation?
Antworten
Nike_95
User
Beiträge: 14
Registriert: Dienstag 5. September 2023, 16:46

Hallo,

Und zwar habe ich ein Problem. Ich habe mir ein Tutorial anguckt https://youtu.be/bFlyT4cDXew?si=ZgB2b36jB_F0lhY0 und es lief erstmal alles gut bis zu dem Zeit Punkt wo er ein Order erstellt. Da ich nicht wie er einfach an die Seite klicken kann und Order erstellen kann weil ich Google Colab nutze oder geht das irgendwie. Und mein Problem war bei diesen Code with open(name, "wb") as f_out: .
Da bekam ich immer eine Fehlermeldung wo ich darauf hingewiesen wurde Is a directory: 'imgs/'. Und meine Frage wäre halt wie Löse ich dieses Problem
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Der Code ist ja jetzt nicht so lang, als dass man den hier nicht posten könnte, und zusätzlich von den genauen Fehlertext.

Jetzt müssen wir hier raten, ob Du den Code exakt so benutzt hast wie im Video.
Schau Dir doch mal an, wie die URLs aussehen, die Du da so abgreifst.
Nike_95
User
Beiträge: 14
Registriert: Dienstag 5. September 2023, 16:46

Okay,

Das ist der Code from bs4 import BeautifulSoup as bs
import requests
import os
URL = "https://de.tradingview.com/ideas/elliottwaves/"
soup = bs (requests.get(URL).content, "html.parser")
img_urls = []
for img in soup.find_all("img"):
img_url = (img.attrs.get("src"))
img_urls.append(img_url)
for url in img_urls:
response = requests.get(URL)
size = int(response.headers.get("Content-Length", 0))
name = os.path.join("imgs", URL.split("/")[-1])
with open(name, "wb") as f_out:
f_out.wirte(response.content)
Das ist der Code.
Und das ist der Fehlercode
---------------------------------------------------------------------------
IsADirectoryError Traceback (most recent call last)
<ipython-input-96-31f735d269e5> in <cell line: 10>()
12 size = int(response.headers.get("Content-Length", 0))
13 name = os.path.join("imgs", URL.split("/")[-1])
---> 14 with open(name, "wb") as f_out:
15 f_out.wirte(response.content)

IsADirectoryError: [Errno 21] Is a directory: 'imgs/'

Reicht das
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Dein Code unterscheidet sich von dem im Video in ein paar entscheidenden Details. Es macht einen Unterschied, ob man URL oder url schreibt.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1021
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Wieder mal eine Anleitung, die veraltete Sachen lehrt.
Anstatt os.path.... sollte man pathlib.Path nutzen. Das kann man sogar noch mit urllib.parse.urlparse kombinieren, wenn man z.B. an den Dateinamen oder kompletten Pfad kommen will. Dann muss man noch beachten, dass Leerzeichen in einer URL unzulässig sind und normalerweise mit %20 ersetzt werden. Das gilt auch für Umlaute und andere Sonderzeichen. Mehr dazu im Code.

Beispielcode:

Code: Alles auswählen

from urllib.parse import urlparse, urljoin, quote, unquote
from urllib.request import urlopen
from pathlib import Path
from bs4 import BeautifulSoup


def get_imgs(url: str, destination_dir: str|Path) -> None:
    destination_dir = Path(destination_dir)
    # html seite einlesen und parsen
    with urlopen(url) as url_fd:
        doc = BeautifulSoup(url_fd.read(), "html.parser")

    # über alle gefundenen img tags iterieren
    for element in doc.find_all("img"):
        # src ist die Quelle des Bildes
        element_src = element["src"]
        # Die Basis-URL muss mit dem Pfad des elements erweitert werden
        # Wenn Leerzeichen im Pfad vorkommen, können url und pfad nicht
        # verknüpft werden, deswegen qoute(element_src)
        ressource_path = urljoin(url, quote(element_src))
        # Dann wird noch ein relativer Pfad benötigt. Aus dem Grund entferne ich den Prefix /
        # Das ganze dann nochmal durch unquote jagen, damit %20 wieder druch leerzeichen ersetzt wird
        ressource_file = Path(unquote(urlparse(ressource_path).path.removeprefix("/")))
        # die Ressource öffnen
        with urlopen(ressource_path) as data:
            # Zielpfad zusammensetzen
            target = destination_dir / ressource_file
            # Das Zielverzeichnis erstellen
            target.parent.mkdir(exist_ok=True, parents=True)
            # Ziel schreibend öffnen
            with target.open("wb") as fd:
                print(target)
                # chunk solange schreiben, bis chunk leer ist
                while chunk := data.read(1024):
                    fd.write(chunk)


get_imgs("https://the-morpheus.de", "the-morpheus")
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Nike_95
User
Beiträge: 14
Registriert: Dienstag 5. September 2023, 16:46

Okay,

Danke für deine Antwort. Ich hätte da noch eine Frage. Kann ich die heruntergeladen Bilder mit diesem Code auch zu einer Erstellung eines Datensets nutzen oder geht das nicht
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was denn für Bilder? Die aus dem Spökenkierkerquatsch mit Elliot-Wellen? Ich glaube kaum, Tim. Denn das sind ja keine Daten, sondern Grafiken aller Art, Werbung inklusive.

Wobei es am Ende egal ist. Quatsch ist Quatsch, du kannst natürlich auch ein nicht funktionierendes Modell mit diesen Bildern bauen, statt ein genauso wenig funktionierendes Modell mit den eigentlichen Aktienwerten. Denn das das grober Unfug ist, sollte klar sein. Entweder es funktioniert, dann redet man darüber nicht. Sondern fährt die Gewinne einfach ein. Oder es funktioniert nicht, dann versucht man den Hokuspokus an die Dummen da draußen zu verkaufen, damit man Geld damit verdient…
Nike_95
User
Beiträge: 14
Registriert: Dienstag 5. September 2023, 16:46

Ja, das kann sein, aber ich möchte keine Elliott-Wave-AI erstellen. Es dient nur zum Testen und sollte zunächst nur eine Bilderkennung sein.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was soll die denn erkennen? Dir ist schon klar, dass dir nur erkennen kann, was du ihr antrainierst? Wenn es also Elliot-Wave-Bilder sind, dann erkennt die auch nur die. Und die Bilder zu erkennen sagt übrigens noch nix über Elliot-Wave-Vorhersagen aus. Nur falls du anderen Behauptungen zum Trotz doch glaubst, da ginge was.
Nike_95
User
Beiträge: 14
Registriert: Dienstag 5. September 2023, 16:46

Okay, Elliott Wave sollte nur ein Beispiel sein, weil die Strukturen relativ simpel aufgebaut sind. Ich will nämlich lernen, wie man grundsätzlich eine KI trainiert.
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Nike_95: Worauf denn? Wonach klassifizierst Du die Bilder denn? Was soll am Ende erkannt werden?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Eine Bild-KI zu trainieren, wenn man eigentlich Zeitreihen analysieren will, ist Unfug. Du hast bisher immer nur ausgesucht schlecht kommuniziert, was dein Ziel ist. Also kann man auch nur mit den Achseln zucken. Irgendwas irgendwie mit KI kann klappen, oder auch nicht. Weiss man alles nicht.
Antworten