本人新手,在学习写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代码?
求大神解答,感激不尽!!!
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);
});
});
创建一个Buffer,每次data事件触发时用Buffer.concat连接两段数据
在end事件后整体输出
代码大概这样,随手写的没跑过,可能有错
let content = new Buffer(0);
res.on('data', (chunk) => {
content = Buffer.concat([content, chunk]);
}).on('end', () => {
//这时content就是完整的了
});