8

一切都在标题中!

有没有办法定义与 python 一起使用的 selenium-chromedriver 的下载目录?

尽管进行了很多研究,但我还没有找到结论性的东西......作为一个新手,我已经看到了很多关于 Chromedriver 的“所需功能”或“选项”的东西,但没有任何东西可以解决我的问题......(而且我还不知道会不会!)

再解释一下我的问题:我有很多要扫描的网址(200 000),并且每个网址都有一个要下载的文件。我必须创建一个包含 url、我在上面废弃的信息以及我刚刚为每个网页下载的文件的名称的表格。对于我必须处理的卷,我创建了打开多个 chromedriver 实例的线程以加快处理速度。问题是每个下载的文件都到达相同的默认目录,我无法再将文件链接到 url...所以,我们的想法是为每个线程创建一个下载目录来逐个管理它们。

如果有人在标题中回答了我的问题,或者有一种解决方法来识别下载的文件并将其与当前 url 链接,我将不胜感激!

4

3 回答 3

1

为 chromedriver1 创建一个新配置文件,并在该配置文件中设置download.default_directory为所需位置,并使用chrome.profile. 这个selenium-chromedriver包应该有一些方法来创建新的配置文件(至少它是用 ruby​​ 做的),因为它们需要一些特殊的处理。

Chromedriver2 不支持设置配置文件。您可以使用它设置首选项。如果要设置下载目录,请执行以下操作:

prefs: { download: { default_directory: "/tmp" } }

ruby selenium-webdriver 尚不支持此功能,但 python 变体可能会支持。

于 2013-05-02T15:42:57.297 回答
1

我最近遇到了同样的问题。尝试了很多在互联网上找到的解决方案,没有人帮助。所以最后我来到了这个:

  • 使用空的用户数据目录(在 /tmp 文件夹中)启动 chrome 以让 chrome 对其进行初始化
  • 退出铬
  • 修改新创建的用户数据目录中的默认/首选项,将这些字段添加到根对象(仅作为示例):

    “下载”:{“default_directory”:“/tmp/tmpX7EADC.downloads”,“directory_upgrade”:真}

  • 使用相同的用户数据目录再次启动 chrome

现在它工作得很好。

另一个提示:如果您不知道要下载的文件的文件名,请创建下载目录的快照(文件列表),然后下载文件并通过比较快照和下载中的当前文件列表找到其名称目录。

于 2013-06-20T11:16:02.187 回答
0

请尝试以下代码....

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
String downloadFilepath = "/path/to/download";
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>();
options.setExperimentalOptions("prefs", chromePrefs);
options.addArguments("--test-type");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(cap);
于 2014-07-18T06:32:20.993 回答