Javascript 自动每天从网站下载csv文件按钮单击

Javascript 自动每天从网站下载csv文件按钮单击,javascript,csv,automation,phantomjs,casperjs,Javascript,Csv,Automation,Phantomjs,Casperjs,我想自动化访问网站、单击按钮和保存文件的过程。在该站点上下载文件的唯一方法是单击按钮。无法使用url导航到该文件 我一直在尝试使用phantomjs和casperjs来自动化这个过程,但没有任何成功 我最近尝试在这里使用brandon的解决方案 这是我的代码 var fs = require('fs'); var cache = require('./cache'); var mimetype = require('./mimetype'); var casper = require('cas

我想自动化访问网站、单击按钮和保存文件的过程。在该站点上下载文件的唯一方法是单击按钮。无法使用url导航到该文件

我一直在尝试使用phantomjs和casperjs来自动化这个过程,但没有任何成功

我最近尝试在这里使用brandon的解决方案

这是我的代码

var fs = require('fs');
var cache = require('./cache');
var mimetype = require('./mimetype');
var casper = require('casper').create();

casper.start('http://www.example.com/page_with_download_button', function() {

});

casper.then(function() {    
     this.click('#download_button');
 });

 casper.on('resource.received', function (resource) {
     "use strict";
    for(i=0;i < resource.headers.length; i++){
        if(resource.headers[i]["name"] == "Content-Type" && resource.headers[i]["value"] == "text/csv; charset-UTF-8;"){
            cache.includeResource(resource);
        }
    }
 });

 casper.on('load.finished', function(status) {
    for(i=0; i< cache.cachedResources.length; i++){
        var file = cache.cachedResources[i].cacheFileNoPath;
        var ext = mimetype.ext[cache.cachedResources[index].mimetype];
        var finalFile = file.replace("."+cache.cacheExtension,"."+ext);
        fs.write('downloads/'+finalFile,cache.cachedResources[i].getContents(),'b');
    }
});

casper.run();
我应该在反斜杠上使用一些东西来定义路径吗

当我尝试

 casperjs --disk-cache=true export_script.js
没有下载任何内容。经过一点调试,我发现cache.cachedResources总是空的

我也愿意接受phantomjs/casperjs之外的解决方案


更新

我不再试图用CasperJS/PhantomJS来实现这一点。 我正在使用dandavis建议的chrome扩展名Tampermonkey。 这只猴子非常容易理解。 我安装了Tampermonkey,通过下载链接导航到页面,然后单击Tampermonkey下的新脚本并添加了我的javascript代码

document.getElementById("download_button").click();
现在,每次我在浏览器中导航到该页面时,文件都会被下载。然后我创建了一个如下所示的批处理脚本

set date=%DATE:~10,4%_%DATE:~4,2%_%DATE:~7,2%
chrome "http://www.example.com/page-with-dl-button"
timeout 10
move "C:\Users\user\Downloads\export.csv" "C:\path\to\dir\export_%date%.csv"
我使用windows任务调度器将批处理脚本设置为每晚运行


成功

您的按钮很可能向服务器发出POST请求。 为了跟踪它:

  • 在中打开网络选项卡
  • 导航到页面并点击按钮
  • 请注意哪个请求导致了文件下载。右键单击它并复制为cURL
  • 运行复制的卷曲

  • 一旦您使用了cURL,您就可以使用cron或任务调度器来计划下载,具体取决于您使用的操作系统。

    tampermonkey是访问特定页面时单击按钮的一种简单方法。window的计划任务是按计划打开url的一种好方法:只需运行url或指定并运行例如
    chrome.exe'http://example.com“
    之类的。您也可以运行快捷方式文件。。。无论如何,浏览器会打开页面,然后单击按钮。在很少使用的桌面上一直使用它。使用selenium wedriver,查看此链接谢谢!我从未听说过tampermonkey。您可能应该在需要转义反斜杠之前移动事件处理程序
    exports.cachePath='C:\\Users\\username\\AppData\\Local\\Ofi Labs\\PhantomJS'
    ,但windows也支持前斜杠
    exports.cachePath='C:/Users/username/AppData/Local/Ofi Labs/PhantomJS'该按钮确实发出POST请求。“开发工具网络”选项卡中的url与页面url相同。我首先尝试了一个php curl解决方案,但我无法返回文件。它总是返回一条错误消息。该网页使用某种验证来检查按钮是否被实际单击。您是否可以使用使用纯HTTP方法时出现的错误更新您的问题?您可能只需要添加一个cookie,就可以放弃*JS工具。
    
    set date=%DATE:~10,4%_%DATE:~4,2%_%DATE:~7,2%
    chrome "http://www.example.com/page-with-dl-button"
    timeout 10
    move "C:\Users\user\Downloads\export.csv" "C:\path\to\dir\export_%date%.csv"