2015-06-02 57 views
0

我試圖用casperjs下載CSV文件,而是我得到的html頁面的代碼無需下載的URL文件。如何使用casperjs

我無法找到事件處理程序,所以我不知道如何讓文件!下面是html代碼,並且顯示的是單擊時下載csv文件的圖像。我搜索在JavaScript文件,我沒有發現任何與此圖像(例如,被點擊的圖像時所調用的函數)

<p align=right> 
<input type="image" name="ctl00$ExportCSV" id="ctl00_ExportCSV" title="Export data to CSV file" src="images/csv.png" style="border-width:0px;" /> 
</p> 

我試着下面的代碼,但沒有任何成功無關! :(

casper.on('resource.received', function(resource) { 
    if (resource.stage !== "end") { 
     console.log("resource.stage !== 'end'"); 
     return; 
    } 
    if (resource.url.indexOf('ExportData.csv') > -1) { 
     console.log("Downloading csv file"); 
     var fs = require('fs'); 
     casper.download(resource.url, fs.workingDirectory+'/ExportData.csv'); 
    } 
}); 

任何幫助如何下載文件?非常感謝!

回答

0

首先,casper.download()作爲它的第一個2個參數「字符串URL」和「目標字符串。」「目標字符串」在這裏是您希望下載的資源的名稱,而不是您希望下載到的資源的名稱,這是我認爲自從您將fs.workingDirectory用作'String target'的一部分之後解釋它的原因。請參見示例用法casper.download()here並仔細看它

此外,似乎在html cod如果你發佈你試圖下載.png文件名稱csv.png,而不是一個實際的.csv文件 - 但這可能是我的誤解。如果您嘗試下載.png文件,請使用casper.captureSelector,如here所示。

我相信你正試圖從this答案中使用的代碼,所以我有一個最後的忠告,使你的代碼工作。看起來你是複製粘貼的代碼,所以我必須確保:行if (resource.url.indexOf('ExportData.csv') > -1) {只有在'ExportData.csv'實際上是你的資源的名字時纔會起作用。使用行console.log(resource.header)檢查資源的名稱。這個名字也應該是你的'字符串目標'。

我希望這有助於!