【问题标题】:How to download XML files avoiding the popup This type of file may harm your computer through ChromeDriver and Chrome using Selenium in Python如何下载XML文件避免弹出这种类型的文件可能会通过ChromeDriver和Chrome在Python中使用Selenium损害您的计算机
【发布时间】:2019-08-19 19:14:47
【问题描述】:

我想从供应商处下载每日 xml 文件。我设法登录并单击链接接受下载以使用 chromedriver 开始下载。

但我收到“这种类型的文件可能会损害您的计算机”的弹出窗口。页面的 MIME 是 text/html,我不确定链接是否是 text/javascript

我尝试了所有建议的解决方案,包括

print('Starting..')
prefs = {
'download.default_directory': 'C:\\Users\MainDesk\Downloads',
'download.prompt_for_download': False,
'download.extensions_to_open': 'xml',
'safebrowsing.enabled': False
}

options = Options()

options.add_experimental_option('prefs',prefs)

browser = webdriver.Chrome(options=options, executable_path='C:\\chromedriver.exe')

如何自动获取我的文件?

另外我尝试进入 Chrome 的设置并关闭询问保存文件

我在 Windows 7 上运行脚本,使用 Python 3.7 和 Visual Studio 以及最新版本的 chromedriver

无法自动下载?

【问题讨论】:

  • stackoverflow.com/questions/34130774/… 看起来像开关 --safebrowsing-disable-download-protection
  • 我检查它不工作:(
  • 您尝试过该链接中的建议吗?
  • 是的,有各种变化:)我能想到
  • 如果我手动执行,则永远不会请求下载权限

标签: python selenium google-chrome selenium-webdriver selenium-chromedriver


【解决方案1】:

更多关于 webpage 的信息,您尝试从其中 下载 xml 文件可能有助于调试弹出窗口的问题文本为“这种类型的文件可能会以更好的方式损害您的计算机

不过这里是一个从this webpage下载xml文件的示例程序:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    prefs = {
    'download.default_directory': 'C:/Utility/Downloads/',
    'download.prompt_for_download': False,
    'download.extensions_to_open': 'xml',
    'safebrowsing.enabled': True
    }
    options = webdriver.ChromeOptions()
    options.add_experimental_option('prefs',prefs)
    options.add_argument("start-maximized")
    # options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    options.add_argument("--safebrowsing-disable-download-protection")
    options.add_argument("safebrowsing-disable-extension-blacklist")
    driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("http://www.landxmlproject.org/file-cabinet")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='MntnRoad.xml']//following::span[1]//a[text()='Download']"))).click()
    
  • 浏览器快照:

【讨论】:

  • 我终于用 geckodriver 并自动将文件保存到下载中
  • 它是否工作只是因为您的代码单击了弹出按钮 (WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()= 'MntnRoad.xml']//following::span[1]//a[text()='Download']"))).click()) 还是它接受了属性?
  • @FelipeCaparelli 属性element_to_be_clickable()在处理Selenium驱动WebDriver时同样重要
  • @DebanjanB,我对答案投了反对票,因为它对我不起作用(我没有使用最后一行 - 选择按钮),但我相信其他属性应该可以工作只是没有必要,对吧?
猜你喜欢
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 2020-10-30
  • 1970-01-01
  • 2018-07-19
相关资源
最近更新 更多