Dev*_*esh 6 python export-to-csv phantomjs selenium-firefoxdriver selenium-webdriver
我正在尝试使用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'))
Run Code Online (Sandbox Code Playgroud)
我正在使用Phantomjs驱动程序:
webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true','--local-storage-path=/tmp'])
Run Code Online (Sandbox Code Playgroud)
并寻找一种方法来设置属性,可以覆盖保存到磁盘并设置数据的MIME类型.目前没有设置属性,PhantomJS驱动程序,不下载该文件.
我已阅读有关避免对话框等的链接,但在这种情况下,需要它.
我最近正在为类似的问题而苦苦挣扎。然而,我最终切换了网络驱动程序,因为它提供了相对轻松地访问网络流量的能力。这意味着,如果文件不是直接在页面上而是被传输进来,您就无法在幻影中看到它。有一些人正在研究解决方法,但我发现我的大部分文件都在传输,因此我更容易使用 Web 驱动程序 + firebug + 网络导出来收集网络流量。
然而,在 phantomjs 中,执行此操作的一种非常 hacky 的方法是这样的:
phantomjs.exe file_to_run.js > my_log.txt
Run Code Online (Sandbox Code Playgroud)
您只需将控制台内容保存到文件即可。但是,您的文件中可能会收到错误和其他消息。你可以清理它,因为你只是在寻找 cdv。
据我了解,PhantomJS 是有限的,因为开发人员对于它应该如何发展有一个非常具体的想法。例如,他们停止支持闪存。没有像在 Firefox 中那样简单的本地下载和保存文件的方法。您可以启动另一个网络浏览器并通过它下载。不过我认为最简单的方法是使用 CasperJS,它与 PhantomJS 配合得很好。
可以在这里找到使用 casperJS 下载文件的一个很好的示例:casperjs 下载 csv 文件
然而,我认为使用 casper 的主要问题是不能很好地支持大文件。您更喜欢使用无头浏览器有什么具体原因吗?