如何使用casperjs下载没有url的文件

How to download file without url using casperjs

本文关键字:url 文件 何使用 casperjs 下载      更新时间:2023-09-26

我正在尝试使用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 '。

我希望这对你有帮助!