【问题标题】:Files get automatically deleted after downloading them with selenium in python在 python 中使用 selenium 下载文件后会自动删除文件
【发布时间】:2020-05-28 14:09:06
【问题描述】:

python 脚本在网站上搜索文件并将其下载到指定位置! 一切正常,文件已下载,但在执行driver.quit() 时,文件会自动移至我的垃圾文件夹。 这是我的代码:

def firefoxOptions():
    options = Options()

    options.headless = True
    options.set_preference("browser.download.folderList", 2)
    options.set_preference("browser.download.manager.showWhenStarting", False)
    options.set_preference("browser.download.dir", "PATH")
    options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/csv")
    return options


def search():
    url = 'site_URL'
    driver = webdriver.Firefox(options=firefoxOptions()) 
    driver.get(url)

    time.sleep(3) #waits for the page to properly load

    driver.find_element(
        By.CSS_SELECTOR,
        "css_selector_first_button").click()

    time.sleep(1) #waits to load

#finds the download button and click it
    driver.find_element(By.CSS_SELECTOR, "css_selector_second_button").click()

    time.sleep(15) #waits for the download to finish
    print("download complete!")
    driver.quit() #file gets deleted when this is executed

search()

我尝试使用driver.close() 而不是driver.quit(),但同样的事情发生了!

【问题讨论】:

  • 您可以尝试使用其他库而不是使用驱动程序下载文件。例如,您可以从按钮获取 url 并使用请求下载。
  • 您找到解决方案了吗?我的代码有完全相同的问题,一切似乎都很好

标签: python selenium selenium-webdriver selenium-firefoxdriver


【解决方案1】:

您确定文件已完全下载并且 15 秒就足够了吗? 在此处查找该案例:python selenium, find out when a download has completed?

否则,由于文件是通过自动化脚本下载的,您的防病毒软件可能会将其移至垃圾箱。暂时禁用您的防病毒软件,运行您的脚本并查看下载的文件是否仍被移至垃圾箱,应该可以确定它是否是您的防病毒软件。

【讨论】:

  • 下载的文件末尾有 .part 扩展名,因此防病毒软件移动了它们。我在 driver.quit() 之前手动将 .part 更改为 .csv 并且有效!
  • 乐于助人:D
  • .part 文件未完全下载,您确定此解决方案正确吗?
  • 我在考虑这个问题 - 也许整个 csv 文件没有下载,链接中的实现会更好。
  • @Juanje 这些文件只有几 KB 大小,所以 15 秒绰绰有余。如果我将自动下载的文件与手动下载的文件进行比较,它们完全一样!但我不知道为什么总是附加 .part!
猜你喜欢
  • 2018-03-12
  • 2020-07-06
  • 2015-03-13
  • 2019-02-13
  • 2021-08-19
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多