在Node.js中限制请求中的正文内容长度

时间:2014-02-05 12:25:14

标签: node.js request limit npm content-length

代码很简单。我只对youtube.com的源代码的第一部分感兴趣,并且我想在内容长度高于10000时停止下载数据。我一直试图这样做但没有成功。有什么想法吗?

var request = require('request');
var cheerio = require('cheerio');
var url = 'https://www.youtube.com/';


request(url, function(err, resp, body) {
  if (err)
      throw err;
    $ = cheerio.load(body);

});

1 个答案:

答案 0 :(得分:3)

不要使用回调,只有在请求完成时才会触发回复,而您的请求永远不会被激活。

使用流:

var request = require('request')
var url = 'https://www.youtube.com/'

var stream = request({
   url: url,
   encoding: 'utf8'
})

var len = 0
var result = ''
stream.on('data', function(d) {
   len += Buffer.byteLength(d)
   result += d
   if (len > 1000) {
      stream.abort()
      console.log(d)
   }
})