6

我想尝试下载(保存到磁盘)使用PhantomJS一个CSV文件,从对话框。使用firefox配置文件,通过设置浏览器配置文件属性,这将非常简单。任何建议如何可以在phantomjs中下载excel文件?硒Phantomjs下载CSV

这是它将如何使用Firefox的驱动程序来完成:

profile = webdriver.firefox.firefox_profile.FirefoxProfile() 
profile.set_preference("browser.download.folderList",2) 
profile.set_preference("browser.download.dir",self.opts['output_dir']) 
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/octet-stream,application/msexcel')) 

我使用Phantomjs司机:

webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true','--local-storage-path=/tmp']) 

,并寻找一种方法来设置它可以覆盖保存到磁盘性能,设置数据的MIME类型。目前没有设置属性,PhantomJS驱动程序,不会下载该文件。

我看了一下,避免对话框等,但在这种情况下,它是需要链接。

+0

当您尝试下载的文件这样会出现什么情况? – That1Guy

+0

我已经提供了如何将工作在Firefox的例子。我正在寻找一种方法来设置PhantomjS驱动程序的属性,它可以覆盖保存到磁盘并设置数据的MIME类型。目前没有设置属性,PhantomJS驱动程序,不会下载该文件。 – Devesh

+0

[phantomjs](https://github.com/Vitallium/phantomjs/tree/download-support)有一个明显提供下载支持的分支,请参阅[this group message](https://groups.google.com !/论坛/#MSG/phantomjs/JChUakj - 24/epby47h3ZGAJ) – Faiz

回答

0

我最近有一个类似的问题挣扎。不过,我最终转换了网络驱动程序,因为它提供了相对容易访问网络流量的功能。这意味着,如果一个文件不是直接在页面上而是被转移进来的,你就不能在幻影中看到它。有一些人的变通工作,但我发现,我的大部分传送文件,因此对我来说,收集网络流量与网络驱动器+萤火虫+净出口很容易。

然而,在phantomjs非常哈克的方式做到这一点会是这样的:

phantomjs.exe file_to_run.js > my_log.txt 

下,你根本保存控制台内容文件。但是,您可能会在文件中收到错误和其他消息。你可以清理它,因为你只是在寻找cdv。

从我的理解来看,PhantomJS是有限的,因为开发人员对于它应该如何有一个非常具体的想法。例如,他们停止支持闪光灯。下载和保存文件的方式并不像在Firefox中那样简单。您可以启动另一个网络浏览器并通过它下载。不过我认为最简单的方法是使用与PhantomJS很好地搭配的CasperJS。

使用casperJS下载文件的一个很好的例子可以在这里找到:casperjs download csv file

我相信,但是使用凯斯普尔主要问题是大文件没有得到很好的支持。是否有一个特定的原因,您更喜欢使用无头浏览器?