Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium和headless chrome通过python下载_Python_Python 3.x_Selenium Webdriver_Webdriver_Selenium Chromedriver - Fatal编程技术网

Selenium和headless chrome通过python下载

Selenium和headless chrome通过python下载,python,python-3.x,selenium-webdriver,webdriver,selenium-chromedriver,Python,Python 3.x,Selenium Webdriver,Webdriver,Selenium Chromedriver,因此,使用selenium通过无头chrome下载文件的问题似乎仍然是个问题,因为一个多月前还没有答案。但我不明白他们是如何实现错误线程中的js的。是否有我可以添加的选项或当前的修复程序?找到了原始的bug页面 从17年10月22日起,我所有的东西都是最新的 在python中: from selenium import webdriver options = webdriver.ChromeOptions() prefs = {"download.default_directory": "

因此,使用selenium通过无头chrome下载文件的问题似乎仍然是个问题,因为一个多月前还没有答案。但我不明白他们是如何实现错误线程中的js的。是否有我可以添加的选项或当前的修复程序?找到了原始的bug页面 从17年10月22日起,我所有的东西都是最新的

在python中:

from selenium import webdriver


options = webdriver.ChromeOptions()

prefs = {"download.default_directory": "C:/Stuff", 
         "download.prompt_for_download": False,
         "download.directory_upgrade": True, 
         "plugins.always_open_pdf_externally": True
         }

options.add_experimental_option("prefs", prefs)
options.add_argument('headless')
driver = webdriver.Chrome(r'C:/Users/aaron/chromedriver.exe', chrome_options = options)

# test file to download which doesn't work
driver.get('http://ipv4.download.thinkbroadband.com/5MB.zip')
如果取消了无头选项,则不会出现问题


我试图下载的实际文件是位于.aspx URL的PDF文件。我通过执行.click()下载它们,除了无头版本之外,它工作得很好。HREF是javascript do_回发脚本

为什么不找到锚href,然后使用get-request下载文件呢。这样,它将在无头模式下工作,速度会快得多。我在C#中做过


我相信现在Chrome支持这一点(正如您链接到bug罚单时所说的),chromedriver团队需要为该功能添加支持。有一张公开票,但目前似乎优先级不高。请,每个需要此功能的人,给它一个+1

对于那些不在上面链接的chromium罚单上或尚未找到解决方案的人。这对我有用。Chrome更新至v65,chromedriver/selenium均为2018年4月16日的最新版本

    prefs = {'download.prompt_for_download': False,
             'download.directory_upgrade': True,
             'safebrowsing.enabled': False,
             'safebrowsing.disable_download_protection': True}

    
    options.add_argument('--headless')
    options.add_experimental_option('prefs', prefs)
    driver = webdriver.Chrome('chromedriver.exe', chrome_options=options)
    driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
    driver.desired_capabilities['browserName'] = 'ur mum'
    params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': r'C:\chickenbutt'}}
    driver.execute("send_command", params)

如果下载时出现失败的文件路径过长错误,请确保下载路径没有尾随空格、斜杠\或反斜杠。路径也必须仅使用反斜杠。我不知道为什么。

我正在尝试下载PDF,而HREF实际上是javascript do_回发脚本。查看PDF时生成的链接都是idencital.aspx URL。
    prefs = {'download.prompt_for_download': False,
             'download.directory_upgrade': True,
             'safebrowsing.enabled': False,
             'safebrowsing.disable_download_protection': True}

    
    options.add_argument('--headless')
    options.add_experimental_option('prefs', prefs)
    driver = webdriver.Chrome('chromedriver.exe', chrome_options=options)
    driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
    driver.desired_capabilities['browserName'] = 'ur mum'
    params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': r'C:\chickenbutt'}}
    driver.execute("send_command", params)