2015-06-02 28 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)检查资源的名称。这个名字也应该是你的'字符串目标'。

我希望这有助于!