Web scraping mit BeautifulSoup

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.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Kann mir diesbezüglich niemand weiterhelfen? Ich haben den Code mit einigen Videos zusammengebastelt. Die Befehle müssten stimmen, da ich mit der im Video erwähnten Seite und den xpaths den gezeigten Output erhalte....
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bebbi: wenn was dynamisch nachgeladen wird, dann muß man auch solange warten, bis es geladen ist.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Ich habe das Ganze noch einmal ein wenig umgestellt und angepasst. Insbesondere habe ich mit WebDriverWait versucht einen zeitlichen Stopp einzubauen. Hier der neue Code

Code: Alles auswählen


from selenium import webdriver
import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Welche Seite wird aufgerufen
url = 'https://finance.yahoo.com/quote/DAI.DE?p=DAI.DE&.tsrc=fin-srch'

# Url zum lokal installierten Chrome Treiber
driver = webdriver.Chrome('C:/Users/Startklar/Desktop/CFDS/chromedriver.exe')
driver.get(url)

# Zum laden der gesamten Seite, sämtliche Einträge werden angezeigt
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# Code zum Element, welches sämtliche benötigte Informationen beinhaltet
articles = WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.js-stream-content")))

# Schlaufe für benötigte Details innerhalb des obigen Elementes
for article in articles:
    try:
         source = article.find_element_by_xpath('//div/div/div[2]/div/span[1]').text
         title = article.find_element_by_xpath('//div/div/div[2]/h3/a').text
         text = article.find_element_by_xpath('//div/div/div[2]/p').text
         date = article.find_element_by_xpath('//div/div/div[1]/div/span[2]').text
         print(source,title,text,date+'/n')
    except:
        print("")

Das Problem ist nun, dass ich als Resultat nur eine News erhalte, diese allerdings 6 Mal... :-((. Ziel wäre natürlich alle Berichte zu erhalten aber halt nur 1 Mal.... Irgendwo ist wohl immer der Wurm drin...
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Was ich auch nicht nachvollziehen kann ist weshalb ich "nur" den Text bekomme und nicht die anderen gewünschten Angaben wie Source, Title und Date...
Antworten