我正在尝试使用casperjs下载csv文件,但我得到的却是html页面的代码。
我找不到事件处理程序,所以我不知道如何获得文件!下面是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');
}
});
下载文件有什么帮助吗?非常感谢!!
首先,casper.download()
的前两个参数为'String url'和'String target '。这里的'String target'是您希望下载的资源的名称,而不是您希望下载到的位置,因为您使用了fs,所以我假定您是这样解释它的。workingDirectory作为"字符串目标"的一部分。请参阅此处的casper.download()
示例,并仔细查看它。
此外,似乎在你发布的html代码中,你试图下载一个。png文件名csv.png,而不是一个实际的。csv文件-但这可能是我的误解。如果你想下载一个。png文件,请使用casper.captureSelector
。
我相信你正在尝试使用这个答案中的代码,所以我有最后一个建议来使你的代码工作。看起来您复制粘贴了代码,所以我必须确保:if (resource.url.indexOf('ExportData.csv') > -1) {
行仅在"ExportData.csv"实际上是您的资源名称时才会起作用。使用console.log( resource.header )
行来检查资源的名称。这个名字也应该是你的'String target '。
我希望这对你有帮助!