在使用请求时的空白内容

我有以下代码:

var request = require('request'); var cheerio = require('cheerio'); var URL = require('url') var fs = require('fs') fs.readFile("urls.txt", 'utf8', function(err, data) { if (err) throw err; var urls = data.split('\n'); urls = urls.filter(function(n){return n}); for(var i in urls) { request(urls[i], function(err, resp, body) { if (err) throw err; $ = cheerio.load(body,{lowerCaseTags: true, xmlMode: true}); $('item').each(function(){ console.log("----------"); console.log($(this).find('title').text()); console.log($(this).find('link').text()); console.log($(this).find('pubDate').text()); }); }).end(); } }); 

并从urls.txt文件我只有以下url:

http://www.visir.is/section/?Template=rss&mime=xml

当我在该url上使用wget时,我得到的响应看起来像一个RSS饲料,但是当我在上面的代码中执行它的身体是空的。 有人可以向我解释为什么以及如何解决这个问题?

更新 :从原始脚本中简单地删除.end()end()终止callback脚本。 国际海事组织,在2016年,我一定会select请求针。


Request是一个奇怪的鸟,为什么它不是在你的情况下工作,它根本就没有提供任何信息。

Needle代替:

 var needle = require('needle'); var cheerio = require('cheerio'); var URL = require('url') var fs = require('fs') fs.readFile("urls.txt", 'utf8', function(err, data) { if (err) throw err; var urls = data.split('\n'); urls = urls.filter(function(n){return n}); for(var i in urls) { needle.get(urls[i], function(err, resp, body) { if (err) throw err; $ = cheerio.load(body,{lowerCaseTags: true, xmlMode: true}); $('item').each(function(){ console.log("----------"); console.log($(this).find('title').text()); console.log($(this).find('link').text()); console.log($(this).find('pubDate').text()); }); }); } });