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

我相信,但是使用凱斯普爾主要問題是大文件沒有得到很好的支持。是否有一個特定的原因,您更喜歡使用無頭瀏覽器?