通过网站按钮单击自动下载每日csv文件



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

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

我最近尝试在这里使用布兰登的解决方案获取 CasperJS 或 PhantomJS 中的资源内容

这是我的代码

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();

我认为问题可能是由于我的缓存路径在缓存中不正确引起的.js

exports.cachePath = 'C:/Users/username/AppData/Local/Ofi Labs/PhantomJS';

我应该在反斜杠中使用一些东西来定义路径吗?

当我尝试时

 casperjs --disk-cache=true export_script.js

不下载任何内容。经过一番调试,我发现cache.cachedResources总是空的。

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


更新

我不再试图用CasperJS/PhantomJS来实现这一点。我正在使用 dandavis 建议的 chrome 扩展名 Tampermonkey。Tampermonkey非常容易弄清楚。我安装了Tampermonkey,导航到带有下载链接的页面,然后单击Tampermonkey下的New Script并添加了我的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:UsersuserDownloadsexport.csv" "C:pathtodirexport_%date%.csv"

我将批处理脚本设置为使用 Windows 任务计划程序每晚运行。

成功!

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

  1. 在 Chrome 开发者工具中打开"网络"标签页
  2. 导航到该页面并点击按钮。
  3. 请注意哪个请求导致文件下载。右键单击它并复制为 cURL
  4. 运行复制的 cURL

一旦cURL工作,您就可以使用cron或任务计划程序计划下载,具体取决于您使用的操作系统。

最新更新