2017-05-10 2 views
0

Ich suchte nach einer Möglichkeit, PDF-Dateien in Python herunterzuladen, und ich sah Antworten auf andere Fragen, die das urllib-Modul empfehlen. Ich habe versucht, eine PDF-Datei damit zu laden, aber wenn ich versuche, die heruntergeladene Datei zu öffnen, erscheint eine Meldung, dass die Datei nicht geöffnet werden kann.Wie lade ich PDF-Dateien mit Python herunter?

error message

Dies ist der Code, den ich

Gebraucht-
import urllib 
urllib.urlretrieve("http://papers.gceguide.com/A%20Levels/Mathematics%20(9709)/9709_s11_qp_42.pdf", "9709_s11_qp_42.pdf") 

Was mache ich falsch? Außerdem speichert die Datei automatisch das Verzeichnis, in dem sich meine Python-Datei befindet. Wie ändere ich den Speicherort, an dem die Datei gespeichert wird?

Bearbeiten- Ich versuchte es noch einmal mit dem Link zu einer Probe pdf, http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf

Der Code wird mit diesem Link funktioniert, also warum wird es nicht für den anderen arbeiten?

+2

Sie 'requests' für diese Aufgabe verwenden: http://stackoverflow.com/questions/34503412/download-and-save-pdf-file-with-python-requests-module –

+0

@DavidZemens ich gewonnen Nenn es nicht ein Duplikat. Das OP ist besorgt, dass seine Lösung nicht funktioniert, sondern dass sie eine andere Lösung findet. –

+1

Wenn ich zu dieser URL gehe, erhalte ich zuerst ein Captcha (durch Cloudflare), um zu beweisen, dass ich kein Roboter bin und erst dann auf die PDF zugreifen kann. Auch Cloudflare-Sites beschränken den Zugriff oft auf Basis eines Benutzeragenten. Wenn Sie die Datei in einem Texteditor öffnen, finden Sie dort wahrscheinlich HTML anstelle von PDF. – mata

Antwort

0
  • Sie können die PDF-Inhalte aus der angegebenen URL herunterladen mit requests oder urllib.
  • Da anfänglich die angegebene URL auf eine andere Webseite nach dem verwiesen wurde, wird nur das PDF geladen.
  • Wenn Sie Zweifel haben, speichern Sie die Antwort als HTML anstelle von PDF.
  • Sie müssen Headless-Browser wie panthomJS verwenden, um Dateien von dieser Art von Webseiten herunterzuladen.
+0

Wie würde ein Headless-Browser in diesem Fall von Nutzen sein? Sie müssen das Captcha noch vervollständigen, was Sie in einem kopflosen Browser nicht tun können. – mata

0

Versuchen Sie es. Es klappt.

import requests 
url='https://pdfs.semanticscholar.org/c029/baf196f33050ceea9ecbf90f054fd5654277.pdf' 
r = requests.get(url, stream=True) 

with open('C:/Users/MICRO HARD/myfile.pdf', 'wb') as f: 
f.write(r.content) 
Verwandte Themen