Automatice la descarga diaria de archivos csv desde el botón del sitio web

Me gustaría automatizar el proceso de visitar un sitio web, hacer clic en un botón y guardar el archivo. La única forma de descargar el archivo en este sitio es hacer clic en un botón. No puede navegar al archivo usando una url.

He estado tratando de usar phantomjs y casperjs para automatizar este proceso, pero no he tenido éxito.

Recientemente intenté usar la solución de Brandon aquíAgarra el contenido de los recursos en CasperJS o PhantomJS

Aquí está mi código para eso

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

Creo que el problema podría deberse a que mi cachePath es incorrecta en cache.js

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

¿Debo usar algo además de las barras diagonales inversas para definir la ruta?

Cuando lo intento

 casperjs --disk-cache=true export_script.js

No se descarga nada. Después de una pequeña depuración, descubrí que cache.cachedResources siempre está vacío.

También estaría abierto a soluciones fuera de phantomjs / casperjs.

ACTUALIZAR

Ya no estoy tratando de lograr esto con CasperJS / PhantomJS. Estoy usando la extensión de ChromeTampermonkey sugerido por dandavis. Tampermonkey fue extremadamente fácil de entender. Instalé Tampermonkey, navegué a la página con el enlace de descarga, y luego hice clic en Nuevo script debajo de tampermonkey y agregué mi código javascript.

document.getElementById("download_button").click();

Ahora, cada vez que navego a la página en mi navegador, el archivo se descarga. Luego creé un script por lotes que se ve así

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"

Configuré ese script por lotes para que se ejecute todas las noches usando el programador de tareas de Windows.

¡Éxito!

Respuestas a la pregunta(1)

Su respuesta a la pregunta