Selenium pdf downloaden

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.
Antworten
earloop
User
Beiträge: 38
Registriert: Sonntag 11. Oktober 2020, 13:54

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)
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Du wartest nicht lange genug, bis die Daten auch geladen sind.
earloop
User
Beiträge: 38
Registriert: Sonntag 11. Oktober 2020, 13:54

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)
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@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)
earloop
User
Beiträge: 38
Registriert: Sonntag 11. Oktober 2020, 13:54

Danke rogerb.

Woran erkenne ich, dass das in einem iframe ist? Wie kann ich die Links aufrufen und die Dateien speichern?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@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.
Antworten