Seite 1 von 1

Selenium pdf downloaden

Verfasst: Sonntag 24. Oktober 2021, 17:07
von earloop
Hi,

ich möchte von dieser Website: https://www.dkb.de/kurse/portrait.html? ... 0009848119
automatisch alle pdfs runterladen, die es unter den Anlegerinformationen gibt.

dazu muss ich die Links ja erstmal identifizieren. Die Links gehören zur CSS Klasse prospectusElement, meine links Liste bleibt aber leider leer :?:

Code: Alles auswählen

from selenium import webdriver

browser = webdriver.Firefox(executable_path='/home/earloop/Downloads/geckodriver')
browser.maximize_window()
browser.get('https://www.dkb.de/kurse/portrait.html?isin=DE0009848119')

links = browser.find_elements_by_class_name("prospectusElement")
for link in links:
      print(link)

Re: Selenium pdf downloaden

Verfasst: Sonntag 24. Oktober 2021, 17:21
von Sirius3
Du wartest nicht lange genug, bis die Daten auch geladen sind.

Re: Selenium pdf downloaden

Verfasst: Sonntag 24. Oktober 2021, 17:30
von earloop
Auch mit Wartezeit ändert sich nichts:

Code: Alles auswählen

from selenium import webdriver
import time

browser = webdriver.Firefox(executable_path='/home/earloop/Downloads/geckodriver')
browser.maximize_window()
browser.get('https://www.dkb.de/kurse/portrait.html?isin=DE0009848119')

time.sleep(10)

links = browser.find_elements_by_class_name("prospectusElement")
for link in links:
      print(link)

Re: Selenium pdf downloaden

Verfasst: Sonntag 24. Oktober 2021, 17:42
von rogerb
@earloop,

der Teil der Seite befindet sich in einem iframe.
Du must vorher auf den wechseln:

Code: Alles auswählen

browser.switch_to.frame(0)
links = browser.find_elements_by_class_name("prospectusElement")
for link in links:
    print(link)

Re: Selenium pdf downloaden

Verfasst: Sonntag 24. Oktober 2021, 17:48
von earloop
Danke rogerb.

Woran erkenne ich, dass das in einem iframe ist? Wie kann ich die Links aufrufen und die Dateien speichern?

Re: Selenium pdf downloaden

Verfasst: Sonntag 24. Oktober 2021, 17:52
von __deets__
Das erkennst du am Quelltext, da steht doch ein iframe-Tag drumrum. Und wie du auf den zugreifst, zeigt rogerb dir doch - was daran ist unklar?

Re: Selenium pdf downloaden

Verfasst: Sonntag 24. Oktober 2021, 18:29
von rogerb
@earloop,

dass sich der Teil der Seite in einem iframe befindet erkennst du am HTML Quellcode.

Zum Download kannst du nach dem a-Tag suchen und darauf ein "click" ausführen.

Code: Alles auswählen

browser.switch_to.frame(0)
container = browser.find_element_by_class_name("prospectus")
a_tags = container.find_elements_by_tag_name("a")
for a_tag in a_tags:
    a_tag.click()
Es gibt hier keinen direkten Link, sondern ein javascript, welches dann ausgeführt wird. Es sollte sich ein Dialog öffnen bei dem du auf "Save" oder "Öffnen" clicken must.
Das scheint aber dann ziemlich kompliziert zu sein, da das Popup Fenster nicht über Selenium steuerbar ist.
Vielleicht kannst du das Standardverhalten des Browsers so einstellen, dass er kein Fenster öffnet sondern PDFs standardmäßig herunter läd.
Mehr weiß ich da leider auch nicht.