我正在尝试使用PhantomJS从对话框下载(保存到磁盘)CSV文件。使用firefox配置文件,通过设置浏览器配置文件属性,这将非常简单。有任何建议如何在phantomjs中下载excel文件?
这是使用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 :(得分:0)
我最近在努力解决类似的问题。但是我最终切换了网络驱动程序,因为它提供了相对容易地访问网络流量的能力。这意味着如果一个文件不是直接在页面上而是转移到你的文件中,则无法在幻像中看到它。有一些人正在努力工作,但我发现我的大部分文件都被转移,因此我更容易通过网络驱动程序+ firebug + net export收集网络流量。
然而,在phantomjs中,做到这一点非常hacky的方式是这样的:
phantomjs.exe file_to_run.js > my_log.txt
您只需将控制台内容保存到文件即可。但是,您可能会在文件中收到错误和其他消息。你可以清理它,因为你只是在寻找cdv。
根据我的理解,PhantomJS是有限的,因为开发人员对它应该如何有一个非常具体的想法。例如,他们停止支持闪存。没有一种简单的本地方式下载和保存文件,就像你在firefox中的方式。您可以启动另一个Web浏览器并通过它下载。但是我认为最简单的方法是使用CasperJS,它可以与PhantomJS很好地配合使用。
使用casperJS下载文件的一个很好的例子可以在这里找到:casperjs download csv file
我认为使用casper的主要问题是大文件不受支持。是否有特定原因您更喜欢使用无头浏览器?