Automate Daily CSV-Datei herunterladen von der Website Button klicken Sie auf

Ich möchte den Besuch einer Website, das Klicken auf eine Schaltfläche und das Speichern der Datei automatisieren. Die einzige Möglichkeit, die Datei auf dieser Site herunterzuladen, besteht darin, auf eine Schaltfläche zu klicken. Sie können nicht mit einer URL zu der Datei navigieren.

Ich habe versucht, diesen Prozess mit Phantomjs und Casperjs zu automatisieren, hatte aber keinen Erfolg.

Ich habe kürzlich versucht, brandons Lösung hier zu verwendenGrab den Ressourceninhalt in CasperJS oder PhantomJS

Hier ist mein Code für das

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

Ich denke, das Problem könnte dadurch verursacht werden, dass mein cachePath in cache.js falsch ist.

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

Sollte ich zusätzlich zu den Backslashes etwas verwenden, um den Pfad zu definieren?

Wenn ich es versuche

 casperjs --disk-cache=true export_script.js

Nothing wird heruntergeladen. Nach ein wenig Debugging habe ich festgestellt, dass cache.cachedResources immer leer ist.

Ich wäre auch offen für Lösungen außerhalb von Phantomjs / Casperjs.

AKTUALISIERE

Ich versuche nicht mehr, dies mit CasperJS / PhantomJS zu erreichen. Ich verwende die Chrome-Erweiterung Tampermonkey vorgeschlagen von Dandavis. Tampermonkey war extrem einfach herauszufinden. Ich habe Tampermonkey installiert, bin zu der Seite mit dem Download-Link navigiert, habe dann unter tampermonkey auf New Script geklickt und meinen Javascript-Code hinzugefügt.

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

Jedes Mal, wenn ich in meinem Browser zur Seite navigiere, wird die Datei heruntergeladen. Ich habe dann ein Batch-Skript erstellt, das so aussieht:

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"

Ich stelle das Batch-Skript so ein, dass es über den Windows-Taskplaner jede Nacht ausgeführt wird.

Erfolg

Antworten auf die Frage(2)

Ihre Antwort auf die Frage