2017-03-31 1 views
0

J'utilise Selenium Webdriver pour automatiser le téléchargement de plusieurs fichiers PDF. Je reçois la fenêtre d'aperçu PDF (voir ci-dessous), et maintenant je voudrais télécharger le fichier. Comment puis-je accomplir cela en utilisant Google Chrome comme navigateur?Selenium Webdriver: Comment télécharger un fichier PDF avec Python?

Dialog Box

+0

Jetez un coup d'oeil à [cette réponse] (https://stackoverflow.com/a/43471196/3846228) ... peut-être que ça va vous aider. –

Répondre

1

J'ai même question en raison de Chrome dernière version ouvre tous les PDF avec PDFServlet navigateur à l'intérieur et non lancer processus télécharger directement.

Dans la dernière version de Chrome, vous pouvez accéder à chrome: plugins et désactiver Chrome PDF Viewer mais cette option n'existe pas maintenant.

Je tente d'obtenir le chemin d'intégration et src pdf et j'essaie d'utiliser un C# HttpWebClientRequest pour essayer de télécharger mais cela ne fonctionne pas pour moi.

J'essaie de voir la documentation pour essayer de trouver un paramètre qui désactive cette fonction PDF mais je ne la trouve pas.

1

Vous pouvez télécharger le fichier pdf (Embeded pdf & Normal pdf) à partir du Web en utilisant du sélénium.

from selenium import webdriver 

download_dir = "C:\\Users\\omprakashpk\\Documents" # for linux/*nix, download_dir="/usr/Public" 
options = webdriver.ChromeOptions() 

profile = {"plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}], # Disable Chrome's PDF Viewer 
       "download.default_directory": download_dir , "download.extensions_to_open": "applications/pdf"} 
options.add_experimental_option("prefs", profile) 
driver = webdriver.Chrome('C:\\chromedriver\\chromedriver_2_32.exe', chrome_options=options) # Optional argument, if not specified will search path. 

driver.get(`pdf_url`) 

Il va télécharger et enregistrer le pdf dans le répertoire spécifié. Changez l'emplacement download_dir et chrome driver location selon votre convenance.

Vous pouvez télécharger le pilote chromé à partir de here.

J'espère que ça aide!

+0

cela fonctionne avec gui, si j'ajoute 'options.add_argument ('headless')' ça ne marche pas. Une idée pourquoi? – jaggi

+0

Essayez 'add_argument (" - headless ")'. Cela fonctionne avec python3. Je suis sûr que ça marchera aussi pour python 2. –

+0

J'utilise aussi python3. il pourrait fonctionner pour d'autres liens de pdf mais pour des liens d'AWS S3, cela ne fonctionne pas. par exemple: 'http: //spark-public.s3.amazonaws.com/nlp/slides/AdvancedMaxent.pdf '. Même wget ne le fait pas pour les liens aws. Je ne sais pas comment aws vous vérifie si vous êtes en mode gui ou non. – jaggi