Python: .pdf aus https Umgebung herunterladen?

2 Antworten

Um eine PDF-Datei aus einer https-Umgebung herunterzuladen, können wir die Python-Bibliothek `requests` verwenden. Hier ist der Code dafür:

# Importiere die requests-Bibliothek
import requests


# Speichere die URL der PDF-Datei in einer Variablen
url = 'https://www.intranet/09.pdf'


# Sende eine HTTP GET-Anfrage an die URL und speichere die Antwort
response = requests.get(url)


# Öffne eine neue Datei mit dem Namen "09.pdf" im Write-Binary-Modus und schreibe den Inhalt der Antwort hinein
with open('09.pdf', 'wb') as f:
    f.write(response.content)

Wenn wir uns bereits bei der https-Umgebung registriert/angemeldet haben, sollte dieser Code in der Lage sein, die PDF-Datei erfolgreich herunterzuladen. Wenn wir jedoch auf eine geschützte Ressource zugreifen möchten, für die eine Authentifizierung erforderlich ist, müssen wir möglicherweise zusätzliche Schritte unternehmen, um uns beim Server zu authentifizieren. Dies könnte zum Beispiel das Hinzufügen von Cookies oder das Übermitteln von Anmeldeinformationen in den HTTP-Header der Anfrage umfassen.

----------------------------------------------------------------------------------------
Um sich zusätzlich bei einer https-Umgebung anzumelden und danach eine PDF-Datei herunterzuladen, ist hier eine überarbeitete Version des Codes:

 # Importiere die requests-Bibliothek
import requests


# Speichere die URL der Anmeldeseite und der PDF-Datei in Variablen
login_url = 'https://www.intranet/login'
pdf_url = 'https://www.intranet/09.pdf'


# Erstelle ein Dictionary mit den Anmeldeinformationen
login_data = {'username': 'myusername', 'password': 'mypassword'}


# Sende eine HTTP POST-Anfrage an die Anmelde-URL mit den Anmeldeinformationen
# und speichere die Antwort (diese enthält möglicherweise Cookies, die für die Authentifizierung benötigt werden)
login_response = requests.post(login_url, data=login_data)


# Sende eine HTTP GET-Anfrage an die URL der PDF-Datei und speichere die Antwort
pdf_response = requests.get(pdf_url, cookies=login_response.cookies)


# Öffne eine neue Datei mit dem Namen "09.pdf" im Write-Binary-Modus und schreibe den Inhalt der Antwort hinein
with open('09.pdf', 'wb') as f:
    f.write(pdf_response.content)

In diesem Beispiel senden wir zunächst eine HTTP POST-Anfrage an die Anmelde-URL mit unseren Anmeldeinformationen. Die Antwort enthält möglicherweise Cookies, die wir für die Authentifizierung bei zukünftigen Anfragen verwenden müssen. Wir speichern diese Cookies in einer Variablen und übergeben sie dann als Argument an die `cookies` -Option, wenn wir die HTTP GET-Anfrage an die URL der PDF-Datei senden. Auf diese Weise werden die Cookies mit der Anfrage übermittelt und der Server kann uns authentifizieren.

Woher ich das weiß:Studium / Ausbildung – Hochschulabschluss in Informatik (MSc)
maowb84 
Fragesteller
 20.12.2022, 07:10

Danke Teil 1 klappt leider schonmal nicht. Ich hatte früher auch schonmal etwa so versucht das Problem zu lösen; leider erfolglos. Teil 2 schau ich mir die Tage mal an, jedoch unsere URL die irgendwann so enden '[..bla....]04_(001)_MF.pdf?csf=1&web=1&e=H7g7yt' scheinen nicht eindeutig bezeichnet zu sein. versuche ich die MF.pdf dann anzuwählen passiert beim Ausführen meines Skriptes: rein gar nix (ich teste in einem größeren Projekt von mir, wo ich wenn etwas nich geht direkt im Ausgangsmenü lande).

0
maowb84 
Fragesteller
 20.12.2022, 07:13
@maowb84

Ich glaube es liegt an den URLs. Hatte sogar schonmal versucht das entsprechende DOkument via OneDrive über unser Intranet zu linken. Auch hier erfolglos -.-

0

Was sagen denn eventuelle Fehlermeldungen? Hat das "Intranet" vielleicht selbst signierte Zertifikate? Mal SSL verify ausgeschaltet?