最初の手順として、デフォルトのダウンロードフォルダを設定しようとしました。SeleniumとChromeで何かをダウンロードできますか?
私は5つのオプションを試してみましたが、それらのどれも働いた:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Selenium example for downloading a webpage."""
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import os
import time
def main():
"""Download an opened PDF page."""
browser = get_browser()
url = "https://martin-thoma.com/pdf/cv-curriculum-vitae.pdf"
browser.get(url) # Open a PDF page
# el = browser.find_element_by_id("plugin")
time.sleep(5)
ActionChains(browser).send_keys(Keys.CONTROL, "s").perform()
print(browser.current_url)
time.sleep(60) # Keep the browser open for 60s
def get_browser():
"""Get the browser (a "driver")."""
# find the path with 'which chromedriver'
path_to_chromedriver = ('/home/moose/GitHub/algorithms/scraping/'
'venv/bin/chromedriver')
download_dir = "/home/moose/selenium-download/"
print("Is directory: {}".format(os.path.isdir(download_dir)))
fail = 6
options = None
desired_caps = None
if fail == 1:
# Fail (1)
os.environ['XDG_DOWNLOAD_DIR'] = download_dir
elif fail == 2:
# Fail (2)
options = webdriver.ChromeOptions()
options.add_argument("download.default_directory={}"
.format(download_dir))
elif fail == 3:
# Fail (3)
options = webdriver.ChromeOptions()
prefs = {"download.default_directory": download_dir}
options.add_experimental_option("prefs", prefs)
elif fail == 4:
# Fail (4)
desired_caps = {'prefs':
{'download': {'default_directory': download_dir,
'directory_upgrade': "true",
'extensions_to_open': ""}}}
elif fail == 5:
# Fail (5)
desired_caps = {'prefs':
{'download.default_directory': download_dir}}
elif fail == 6:
# Fail (6)
desired_caps = {'prefs':
{'download': {'default_directory': download_dir,
'directory_upgrade': True,
'extensions_to_open': ""}}}
browser = webdriver.Chrome(executable_path=path_to_chromedriver,
chrome_options=options,
desired_capabilities=desired_caps)
return browser
if __name__ == '__main__':
main()
私はURLでPDFをダウンロードするためのシンプルな方法があります知っています。しかし、私の本物のユースケースははるかに複雑でダウンロードはJavaScriptを使って行われている3ステップのログインプロセスの後ろにあるリンクをクリックすることによって発生します。
だから、この質問には二つの側面があります。
- 私は(Ubuntuの16.04で)セレンとChromeをデフォルトのダウンロードディレクトリを変更するにはどうすればよいですか?
- 開いているPDFをダウンロードするにはどうすればよいですか? (私はアクションチェーンを試しましたが動作しません)
私はGoogle Chrome Version 59.0.3071.115 (Official Build) (64-bit)
をpipインストーラからダウンロードしました。
あなたのコードや実際のユースケースを見ることなく、問題が何であるかを知るのは少し難しいです。 pdfにプラグインがロードされていますか(つまり、埋め込まれておらず、通常のダウンロード、ズームなどのアイコンが表示されます)。ログインしてpdfを1ステップで開きますか(アクセス権とポップアップがないものをクリックするとシナリオを考えています... errr ... pops up)?クロームドライバを使用する必要がありますか?多分あなたはFirefoxを使うことができます。同じトリックもそれに作用します(明らかに好みを設定する少し異なる方法で)あなたの問題を解決するかもしれません。 – user2986898
(1)通常のダウンロード/ズームアイコンが表示されます。 (2)他のマシンで「Chromium Version 60.0.3112.78」と認識しました。私はそれを修正します。 –
いいえ、クロムで動作しますが、クロムでは動作しません。 –