【问题标题】:Zombie.js - Downloading files supportZombie.js - 下载文件支持
【发布时间】:2013-11-20 15:14:45
【问题描述】:

我正在尝试在 Zombie.js 中处理下载提示,查看 API 我没有看到任何指示如何执行此操作的信息。

基本上,我要做的是浏览需要身份验证的网站,然后单击该网站上的按钮(无 href),然后自动进行下载。下载的文件将被重命名并发送到指定的文件夹。

有没有办法做到这一点?

【问题讨论】:

  • 它们是什么类型的下载提示?您是在谈论 Windows 文件对话框,还是在使用 Mac?还是这些是某种 javascript 提示?
  • 我认为这是可能的。如果让我确切地知道它们是什么提示,我可能会帮助你。
  • 你要下载什么样的文件?如果它是一个 text/js 文件,你可以让浏览器打开它,获取渲染页面的内容并将其保存在一个文件中。对于图像/可执行文件/其他我不知道的...

标签: javascript node.js web-crawler zombie.js


【解决方案1】:

Zombie.js 似乎没有提供直接做你想做的事情的方法,但在内部它使用request 下载文件,然后发出一个你可以监听的response 事件(参见resources.coffee) :

var browser = new Zombie();

browser.on('response', function(request, response) {
    browser.response = response;
});

browser.visit('http://test.com/', function() {
    browser.clickLink('Download the file', function() {
        // the 'response' handler should have run by now
        var fileContents = browser.response.body;
    });
});

这对我来说似乎工作得很好。

【讨论】:

    【解决方案2】:

    可能会尝试:

    http://phantomjs.org

    你应该能够操纵 dom...下载。

    https://github.com/ariya/phantomjs/wiki/Page-Automation

    可能需要编写一个单独的脚本来进行文件重命名。

    【讨论】:

    • 同样值得研究CasperJS,它位于 PhantomJS 之上。我相信,它对于会话/cookie/身份验证持久性特别出色,并且(基本)支持写入文件和/或下载它们。
    【解决方案3】:

    据我所知,详细了解 Zombie.js 的 API,我会说不,这是不可能的

    我知道这不是你希望的答案,但事实并不总是美好的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      相关资源
      最近更新 更多