关于node http.request中处理response方式的疑问

本人新手,在学习写node爬虫的时候遇到了这样的问题:除了在data事件中处理http.IncomingMessage,还有哪些方式呢?
具体点:

const http = require('http');
const iconv = require('iconv-lite');

let fetchJueQi = http.get(options,
    (res) => {
        res.on('data', (chunk) => {
            let context = iconv.decode(chunk, 'gbk');
            console.log('内容'+ context);
        })
    });

假如用这个函数获取一个页面的html代码,可能会有几次console.log的输出,每次输出html代码的一段。
那么现在我怎么做,才能一次直接输出整个html代码?
求大神解答,感激不尽!!!

阅读 3.1k
2 个回答

创建一个Buffer,每次data事件触发时用Buffer.concat连接两段数据
在end事件后整体输出

代码大概这样,随手写的没跑过,可能有错

        let content = new Buffer(0);
        res.on('data', (chunk) => {
            content = Buffer.concat([content, chunk]);
        }).on('end', () => {
            //这时content就是完整的了
        });
const http = require('http');
const iconv = require('iconv-lite');

let fetchJueQi = http.get(options,
    (res) => {
        let result = '';
        res.on('data', (chunk) => {
            let context = iconv.decode(chunk, 'gbk');
            result += context;
        });
        res.on('end', () => {
            console.log(result);
        });
    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题