ich versuche gerade die Daten von folgender Website zu scrapen:
Tabelle: Historische Kurse und Umsätze DAX etwas weiter unten auf der Seite:
https://www.boerse-frankfurt.de/index/d ... d-umsaetze
Also die Tabelle mit: Datum, Eröffnung, Schluss, Tageshoch
Das Script mit dem ich arbeite sieht so aus:
Code: Alles auswählen
import os
import time
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Chrome-Optionen für die Verbindung zu einem bereits laufenden Browser
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
# Passe den Pfad zum ChromeDriver an
driver = webdriver.Chrome(executable_path='chromedriver.exe', options=chrome_options)
target_url = "https://www.boerse-frankfurt.de/index/dax/kurshistorie/historische-kurse-und-umsaetze"
def switch_to_target_tab(driver, url):
for handle in driver.window_handles:
driver.switch_to.window(handle)
if url in driver.current_url:
return True
return False
if not switch_to_target_tab(driver, target_url):
print("Tab nicht gefunden!")
driver.quit()
exit()
# Warte, bis die Tabelle geladen ist
# Passe den Selector ggf. an, falls die Seite sich ändert
for _ in range(10):
try:
# Mit CSS-Selector nach Klasse:
table = driver.find_element(By.CSS_SELECTOR, "app-price-history _nghost-boerse-frankfurt-c352035757")
except:
time.sleep(2)
else:print("Tabelle nicht gefunden!")
driver.quit()
exit()
rows = table.find_elements(By.TAG_NAME, "tr")[1:] # Überspringe Kopfzeile
csv_data = []
for row in rows:
cols = row.find_elements(By.TAG_NAME, "td")
if len(cols) >= 5:
datum = cols[0].text.strip()
eroeffnung = cols[1].text.strip()
schluss = cols[4].text.strip()
tageshoch = cols[2].text.strip()
tagestief = cols[3].text.strip()
csv_data.append([datum] [eroeffnung] [schluss] [tageshoch] [tagestief])
......
"table = driver.find_element"
gut durch. Aber es scheitert daran, dass ich nicht hinbekomme wie ich die Tabelle mit den Kursdaten auswählen kann. Meine Versuche mit das "inspect" und "Copy Selctor" für die Tabelle:
Code: Alles auswählen
body > app-root > app-wrapper > div > div > div.content-wrapper > app-index > div.row.ng-star-inserted > div > app-price-history > div.widget.app-loading-spinner-parent.d-block.ar-mt.ar-p > div > div > div.table-responsive > table
HTML ist bei mir auch 20 Jahre her aber ich habe das Gefühl dass die Website versucht die Daten zu verstecken und nachlädt. Komme ich da irgendwie anders dran mit beautifulsoup vielleicht? Da sind die Daten ja sonst könnte ich sie im Browser ja nicht sehen...
Wie ihr merkt habe ich davon keine Ahnung
