我正在尝试使用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');
}
});
如何下载文件?非常感谢!!
答案 0 :(得分:0)
首先,casper.download()
将前两个参数作为'String url'和'String target'。这里的'字符串目标'是您要下载的资源的名称,而不是您希望下载到的地方的名称,这就是我认为您将其解释为自从您使用fs.workingDirectory作为“字符串目标”的一部分的地方。 “请参阅casper.download()
here的使用示例并仔细查看。
此外,似乎在你发布的html代码中你试图下载一个.png文件名csv.png,而不是一个真正的.csv文件 - 但这可能是我的误解。如果您要下载.png文件,请使用casper.captureSelector
,如here所示。
我相信您正在尝试使用this回答中的代码,因此我有一条最后的建议可以让您的代码正常运行。您似乎复制粘贴了代码,因此我必须确保:只有'ExportData.csv'实际上是您的资源名称时,行if (resource.url.indexOf('ExportData.csv') > -1) {
才会起作用。使用行console.log( resource.header )
检查资源的名称。该名称也应该是您的“字符串目标”。
我希望这有帮助!