使用python为chromedriver selenium定义下载目录

使用python为chromedriver selenium定义下载目录,python,selenium,selenium-chromedriver,Python,Selenium,Selenium Chromedriver,一切都在标题里 有没有办法为python使用的selenium chromedriver定义下载目录 尽管做了很多研究,我还没有发现什么结论性的东西。。。 作为一个新手,我看到了很多关于Chromedriver的“期望的功能”或“选项”的东西,但没有任何东西解决我的问题。。。(我仍然不知道它会不会!) 再解释一下我的问题: 我有很多url要扫描(200000),每个url都有一个文件要下载。 我必须创建一个包含url、我在上面放弃的信息以及我刚刚下载的每个网页的文件名的表。 对于我必须处理的卷,

一切都在标题里

有没有办法为python使用的selenium chromedriver定义下载目录

尽管做了很多研究,我还没有发现什么结论性的东西。。。 作为一个新手,我看到了很多关于Chromedriver的“期望的功能”或“选项”的东西,但没有任何东西解决我的问题。。。(我仍然不知道它会不会!)

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


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

为ChromeDriver 1创建一个新的配置文件,并在该配置文件集内
下载。默认\u目录
到所需位置,并使用
chrome.profile
为chrome设置此配置文件。selenium chromedriver包应该有一些创建新概要文件的方法(至少在ruby中是这样),因为它们需要一些特殊的处理

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

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

ruby selenium webdriver还不支持此功能,但是python变体可能支持此功能。

我最近遇到了同样的问题。尝试了很多在互联网上找到的解决方案,没有人帮忙。所以最后我得出结论:

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

    “下载”:{ “默认目录”:“/tmp/tmpX7EADC.downloads”, “目录升级”:true }

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

现在它工作得很好


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

请尝试以下代码

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);
System.setProperty(“webdriver.chrome.driver”,“/path/to/chromedriver”);
字符串downloadFilepath=“/path/to/download”;
HashMap chromePrefs=新HashMap();
chromePrefs.put(“profile.default\u content\u settings.popups”,0);
chromePrefs.put(“download.default\u目录”,downloadFilepath);
ChromeOptions选项=新的ChromeOptions();
HashMap chromeOptionsMap=新HashMap();
选项。设置实验选项(“prefs”,chromePrefs);
options.addArguments(“--test type”);
DesiredCapabilities=DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY,ChromeOptions sMap);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true);
上限设置能力(色度选项、能力、选项);
WebDriver=新的ChromeDriver(cap);

一般来说,我建议你不要使用chrome下载东西,这通常是一个考虑不周的测试,只是将所有东西下载到一个静态文件夹中。你对下载的文件做了什么吗?读一读这个:然后这个你好,谢谢你的回复。实际上,我不使用Selenium来运行测试,而是自动下载大量数据csv文件进行后期处理。我试图探索urllib2的方法,但在站点上进行身份验证时遇到了困难。。。(可能是因为我是一个周日DIY新手,Selenium在我找到它的时候一直是金蛋鹅!…)如果你需要某种Python伪代码来解决这个问题,请告诉我。
C
回答一个
Python
问题?