【问题标题】:multiple download folders using Selenium Webdriver?使用 Selenium Webdriver 的多个下载文件夹?
【发布时间】:2013-08-07 23:43:36
【问题描述】:

我正在使用 Selenium webdriver(在 Python 中)来自动下载数千个文件。我希望将文件保存在不同的文件夹中。以下代码有效,但需要多次退出并重新启动 webdriver,这会减慢进程:

some_list = ["item1", "item2", "item3"] # over 300 items on the actual code
for item in some_list:
    download_folder = "/Users/myusername/Desktop/" + item
    os.makedirs(download_folder)
    fp = webdriver.FirefoxProfile()
    fp.set_preference("browser.download.folderList", 2)
    fp.set_preference("browser.download.manager.showWhenStarting", False)
    fp.set_preference("browser.download.dir", download_folder)
    fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain")
    browser = webdriver.Firefox(firefox_profile = fp)

    # a bunch of code that accesses the site and downloads the files

    browser.close()
    browser.quit()

因此,在每次迭代中,我都必须退出 webdriver 并重新启动它,这非常低效。有一个更好的方法吗?显然,在 webdriver 实例化后我们无法更改 Firefox 配置文件(请参阅 thisthis 以前的问题),但也许我缺少一些替代方案?

(Mac OS X 10.6.8、Python 2.7.5、Selenium 2.2.0)

【问题讨论】:

  • 使用普通的旧 Java 移动文件是否可行?
  • 嗯,我没试过——我是编程新手,我只知道一些 Python。

标签: python python-2.7 selenium-webdriver


【解决方案1】:

不,我认为你做不到。

选项一:为一个 FirefoxProfile 指定不同的默认目录

你不能。在我看来,这是 Firefox 的问题,而不是 Selenium。但是,这个 Firefox 限制对我来说似乎是正确的设计。 browser.download.dir 是默认下载目的地,如果它允许多个目录,则不再是 "default"

方案二:为一个驱动实例切换多个 FirefoxProfile

如果不在 Firefox 中这样做,是否可以为相同的驱动程序实例切换 FirefoxProfile?据我所知,答案是否定的。 (您已经对此进行了一些研究)

方案三:使用普通的非Selenium方式进行下载

如果您想避免使用这种自动下载方法并以正常方式进行(如 Auto-it 等),那么它属于"How To Download Files With Selenium And Why You Shouldn’t" 的类别。但在这种情况下,您的代码可以简化。

some_list = ["item1", "item2", "item3"] # over 300 items on the actual code
for item in some_list:
    download_folder = "/Users/myusername/Desktop/" + item
    some_way_magically_do_the_downloading(download_folder)

【讨论】:

  • 谢谢。我会尝试学习一些java,然后看看我是否能理解“如何下载...”中的代码以及如何将其翻译成Python。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 2018-04-14
  • 1970-01-01
相关资源
最近更新 更多