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
[Errno 21] Is a directory: 'imgs/'
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.
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.
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
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
- DeaD_EyE
- User
- Beiträge: 1030
- 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:
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
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…
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…
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.
- __blackjack__
- User
- Beiträge: 13181
- 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?
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
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.