javascript - URL重定向时如何使用CasperJS下载

标签 javascript download phantomjs casperjs

我花了几天时间阅读答案和测试,并试图找出当 URL 重定向时如何访问 CasperJS 下载文件。我重现了尝试从 https://firefox.com 下载 Firefox 的问题我收到警告:

[warning] [phantom] Loading resource failed with status=fail (HTTP 200): https://download.mozilla.org/?product=firefox-48.0.2-SSL&os=linux64&lang=en-US
[warning] [phantom] Loading resource failed with status=fail (HTTP 200): https://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0.2/linux-x86_64/en-US/firefox-48.0.2.tar.bz2

和一个名为 ?product=firefox-48.0.2-SSL&os=linux64&lang=en-US

的 0 字节文件

第二个警告告诉我 casperjs 获取了新的 url(如果您使用浏览器导航到它们,则两者都会下载相同的 zip 文件)

捕获下载的文件时我缺少什么?

var casper = require('casper').create({
    pageSettings: {
        userAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"
    }
});

casper.start().thenOpen("https://firefox.com", function () {
    this.viewport(1200, 800);
});

casper.then(function () {
    this.click('li.os_linux64 a');
    this.wait(3000);
});

casper.on('resource.received', function (resource) {
    if (resource.stage !== "end") {
        return;
    }
    if (resource.url.indexOf('download') > -1) {
        this.download(resource.url, 'out/' + new String(resource.url).substring(resource.url.lastIndexOf('/') + 1));
    }
});

casper.run();

版本:

casperjs 1.1.3
phantomjs 2.1.1

命令行:

casperjs --verbose --log-level=warning --ssl-protocol=any --ignore-ssl-errors=true --web-security=no script.js

最佳答案

我回答了我自己的问题。我看到的所有例子都有

if (resource.stage !== "end") {
    return;
}

casper.on('resource.received'... 函数中。删除这导致下载成功。我不确定它的作用(或者现在不行)。

注意:我还必须使用较小的下载文件进行测试,因为 casperjs/phantomjs 资源接收似乎有 30 秒的超时。请参阅CasperJS File Download Times Out After 30 Seconds

关于javascript - URL重定向时如何使用CasperJS下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39184632/

相关文章:

asp.net - 在 ASP.NET 中下载文本文件是附加网页 HTML

带标题的 Javascript 图像 slider - 标题不显示

javascript - 动态增加AJAX加载器的加载百分比

OpenStreep map 的 JavaScript 离线路线库

javascript - CasperJS 中的静默错误

javascript - Phantomjs 无法正确捕获网页的屏幕截图

qt - phantomjs 用 webGL 编译

javascript - 使用 for 循环的简单倒计时

java - 是否应该使用多线程来下载大量图像?

javascript - 在 HTML5 中缓存 MP3 以便离线收听?