var request = require('request'); var xml2js = require('xml2js'); var url = 'http://blog.whyun.com/feed.xml'; var keyword = '异步'; function parseResponse(url,description, error,response,body,callback) { if (error) { console.error('请求'+url+'失败',error); callback('请求'+description+'网络错误'); return; } if (!response) { callback('请求'+description+'失败,未知错误'); return; } if (response.statusCode != 200) { console.error(url, response.statusCode, body); callback('请求'+description+'失败['+response.statusCode+']'); return; } xml2js.parseString(body,{explicitRoot:false,explicitArray : false},function(err,data) { if (err) { console.error('解析返回数据失败',err,body); return callback('解析返回数据失败'); } callback(false,data); }); } request({ url:url, headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} },function(error,response,body) { parseResponse(url,'解析xml',error,response,body,function(err,data){ if (err) { return; } if (!data || !data.channel || !data.channel.item) { return console.error('数据非法',data); } var articles = data.channel.item.filter(function(item) { return item.title && item.title.indexOf(keyword) !== -1; }); console.log(articles); }); });