Невозможно загрузить ZIP-файл из URL с помощью casperjs.

Я пытался скачать файл.zip с веб-сайта, используя casperjs, но он мне не позволил.

1) Если я открываю URL с помощью casper.thenOpen(), он показывает мне типичный диалог загрузки "Хотите открыть или сохранить этот файл?", Дело в том, что я не смог найти способ выбрать " Скачайте его " (что мне нужно) вместо" откройте его "с помощью casperjs.

2) Прямо сейчас я использую casper.download(), но он просто загружает 0-байтовый файл, я думаю, что это лучший вариант, потому что я могу указать адрес, по которому файл должен быть загружен, и он не просит меня скачайте файл, просто скачайте, что мне и нужно.

это скрипт, который я запускаю:

var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug',
    pageSettings: {
        loadImages:  true,         // The WebPage instance used by Casper will
        loadPlugins: false,         // use these settings
        userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'
    }
});

// print out all the messages in the headless browser context
casper.on('remote.message', function(msg) {
    this.echo('remote message caught: ' + msg);
});

// print out all the messages in the headless browser context
casper.on("page.error", function(msg, trace) {
    this.echo("Page Error: " + msg, "ERROR");
});

var url = 'http://website.com/';

casper.start(url, function() {
    // search for 'casperjs' from google form
    console.log("page loaded");
    this.then(function(){
        this.test.assertExists('form', 'form is found');
    });
    casper.then(function(){
    this.fill('form', {
        u: 'username',
        p:  'password'
    }, true);
    this.click("#submitButton");
    });
    this.wait(5000);
});

casper.page.settings.webSecurityEnabled = false;

casper.waitForUrl(/affiliates/, function(){
    this.echo ("start downloading");
    var url = 'http://website.com/affiliates/s.ashx?c=1977';
    this.download(url, '/home/enmanuel/Desktop/1977.zip');
    this.echo("finish download");
});

casper.then(function(){this.wait(5000);});

casper.run();

Я запускаю скрипт как:

casperjs UnionSquare.js --engine=slimerjs --disk-cache=no

Прямо сейчас я получаю эти ошибки:

[ошибка] [удаленный] getBinary(): ошибка при извлечении: [Исключение... "Ошибка" nsresult: "0x80004005 (NS_ERROR_FAILURE))" расположение: "кадр JS:: /usr/local/lib/node_modules/casperjs/modules/clientutils.js:: sendAJAX:: строка 894"данные: нет]

ОБНОВИТЬ

Спустя некоторое время, ища ответы, я обнаружил, что это не ограничение Каспера, это ограничение двигателя, здесь текущий статус проблемы

Если вы хотите сделать что-то похожее на это, я закончил делать это с чистыми nodejs и некоторыми модулями. Вот как я это сделал

0 ответов

Другие вопросы по тегам