首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动从网站按钮点击每天下载csv文件

自动从网站按钮点击每天下载csv文件
EN

Stack Overflow用户
提问于 2016-03-16 19:57:18
回答 1查看 18.6K关注 0票数 4

我想自动访问一个网站,点击一个按钮,并保存文件的过程。在这个网站上下载文件的唯一方法是点击一个按钮。您不能使用url导航到文件。

我一直试图使用幻影和casperjs来实现这个过程的自动化,但没有取得任何成功。

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

这是我的密码

代码语言:javascript
复制
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();

我认为这个问题可能是由于我的cachePath在cache.js中不正确而造成的。

代码语言:javascript
复制
exports.cachePath = 'C:/Users/username/AppData/Local/Ofi Labs/PhantomJS';

我是否应该在反斜杠上使用什么东西来定义路径?

当我尝试

代码语言:javascript
复制
 casperjs --disk-cache=true export_script.js

什么都没下载。经过一些调试,我发现cache.cachedResources始终是空的。

我也愿意接受幻影/casperjs之外的解决方案。

更新

我不再试图用CasperJS/PhantomJS来完成这一任务。我正在使用dandavis建议的铬扩展Tamper猴子。坦佩猴子非常容易弄明白。我安装了Tamper猴子,导航到带有下载链接的页面,然后单击tamper猴子下的New Script并添加了我的javascript代码。

代码语言:javascript
复制
document.getElementById("download_button").click();

现在,每当我导航到浏览器中的页面时,文件就会被下载。然后我创建了一个批处理脚本,如下所示

代码语言:javascript
复制
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任务调度程序运行。

成功!

EN

回答 1

Stack Overflow用户

发布于 2016-03-16 20:40:16

您的按钮很可能向服务器发出POST请求。为了追踪这一情况:

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

一旦您使用了cURL,您就可以根据使用的操作系统使用cron或来安排下载。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36045745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档