首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Zombie.js中流/管响应对象

如何从Zombie.js中流/管响应对象
EN

Stack Overflow用户
提问于 2015-12-02 13:17:03
回答 2查看 615关注 0票数 3

如何使用Zombie.js下载一个文件,并使用一个使用标记来模拟刷新HTTP头的web应用程序?

本质上,您如何下载/流/管道一个可下载的资源,在某个时间之后加载,而不是通过一个直接的下载链接。

我在想我可以用Zombie.js管道.但是那些文档对僵尸新手来说是毫无意义的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-01 13:09:53

可用于下载二进制文件

代码语言:javascript
复制
var fs = require('fs');
var URL = require('url');
var Request = require('request'); // Named 'Request' to prevent conflict with zombie's 'request' object
var Browser = require('zombie'), browser = new Browser();

browser.on('request', function (request) {

  // let's pullover for a download incase we find our request signboard :)
  if (request.url.indexOf('https://matchingString') == 0) {

    console.log('Beginning download in a flash...');

    var 
    parsedURL = URL.parse(request.url), 
    cookies = browser.cookies, 
    cookieHeader = cookies.serialize(parsedURL.hostname, parsedURL.pathname);

    if (cookieHeader) request.headers.append('Cookie', cookieHeader);

    var writeStream = fs.createWriteStream(pathToFileYetToBeWritten);

    writeStream
    .on('error', function(err) {
        console.error(err);
    })
    .on('finish', function() {
        console.log('finished writing file');
    });

    Request({
        method: request.method, 
        uri: request.url, 
        headers: request.headers.toObject(), 
        proxy: browser.proxy, 
        body: request.body, 
        jar: false, 
        followRedirect: false, 
        strictSSL: browser.strictSSL, 
        localAddress: browser.localAddress || 0
    })
    .on('error', function(err) {
        console.error(err);
    })
    .pipe(writeStream);

}

});



browser.visit(url, function () {

browser.wait(6000); // Wait only if you need to

});
票数 0
EN

Stack Overflow用户

发布于 2015-12-08 20:04:47

不知道这能不能帮你,但这帮我抓到了反应机构。(从GitHub问题中复制)

代码语言:javascript
复制
var Promise = require('bluebird');
const Browser = require('zombie');
const browser = new Browser();


browser.visit(myUrl, function() {
  browser.click('body')
    .then(function(){
      return Promise.map(browser.resources, function(resource){
        return (resource.response._bodyUsed)
          ? resource.response.body
          : resource.response.text();
      }).then(function(bodies){
        console.log(bodies);
      });
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34043741

复制
相关文章

相似问题

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