2018-07-27 node实例一

node简单的爬东西

第一种方式

1.下载
npm install http,cheerio --save
2.初始化url并调用封装函数
var url = "http://www.baidu.com"; //初始url
function fetchPage(x) { //封装了一层函数
startRequest(x);
}
fetchPage(url);
3.读取网页的内容,同时
var html={};
res.on('data',function(chunk){
html+=chunk;
});//读取操作
4.调用cheerio,
将读取的网页buffer内容转换为html代码,
res.on('end',function(){
var =cheerio.load(html); ar l=('#u').find('a').html();//这一步是将html代码中提取特定的内容,
因网页和你想提取的内容不同而不同
console.log(l);
//输出了结果
简单爬取

第二种方式 进阶篇

1.下载request,cheerio,fs
npm install request,cheerio,fs --save
2.使用request模块读取网页内容
url = 'http://movie.douban.com/subject/25724854/';
//这里是举个例子而已,豆瓣的具体的电影网址可以自己替换
var html = '';
html = request('GET', url).getBody().toString();
3.调用cheerio模块分析处理html
var =cheerio.load('html'); var info =('#info');
// 获取电影名
var movieName = ('#content>h1>span').filter(function(i,el){ return(this).attr('property') === 'v:itemreviewed';
}).text();
// 获取影片导演名
var directories = '- 导演:' + ('#info span a').filter(function(i,el){ return(this).attr('rel') === 'v:directedBy';
}).text();
// 获取影片演员
var starsName = '- 主演:';
('.actor .attrs a').each(function(i,elem){ starsName +=(this).text() + '/';
});
// 获取片长
var runTime = '- 片长:' + ('#info span').filter(function(i,el){ return(this).attr('property') === 'v:runtime';
}).text();
// 获取影片类型
var kind = ('#info span').filter(function(i,el){ return(this).attr('property') === 'v:genre'
}).text();
// 处理影片类型数据
var kLength = kind.length;
var kinds = '- 影 片类型:';
for (i = 0; i < kLength; i += 2){
kinds += kind.slice(i,i+2) + '/';
}
// 获取电影评分和电影评分人数
// 豆瓣
var DBScore = ('.ll.rating_num').text(); var DBVotes =('a.rating_people>span').text().replace(/\B(?=(\d{3})+$)/g,',');
var DB = '- 豆 瓣评分:' + DBScore + '/10' + '(' + 'from' + DBVotes + 'users' + ')';
var data = movieName + '\r\n' + directories + '\r\n' + starsName + '\r\n' + runTime + '\r\n' + kinds + '\r\n'+ DB +'\r\n';
4.输出并写入文件
console.log(data);
fs.appendFile('dbmovie.txt', data, 'utf-8', function(err){
if (err) throw err;
else console.log('大体信息写入成功'+'\r\n' )
});
如果要问模块的具体用法,自行百度
这只是两个小demo 。。。

你可能感兴趣的:(2018-07-27 node实例一)