前言

爬虫,是一种自动获取网页内容的程序。是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化。

这篇文章介绍的是利用node.js实现博客小爬虫,核心的注释我都标注好了,可以自行理解,只需修改url和按照要趴的博客内部dom构造改一下filterchapters和filterchapters1就行了!

下面话不多说,直接来看实例代码

var http=require('http');
var Promise=require('Bluebird');
var cheerio = require('cheerio');
var url='http://www.immaster.cn';//博客地址
function filterchapters1(html) {//解析文章链接
 var $ =cheerio.load(html);
 var post=$('.post');
 
 var content=[];
 post.each(function (item) {
 
 var postid=$(this).find('.tit').find('a').attr('href');
 
 content.push(postid);
 })
 return content;
}
function filterchapters(html) {//解析每个文章内的内容
 var $ =cheerio.load(html);
 var tit=$('.post .tit').find('a').text();
 var postid=$('.tit').find('a').attr('href');
 var commentnum=$('.comments-title').text();
 commentnum=commentnum.trim();
 // commentnum=commentnum.replace('\n','');
 var content={tit:tit,url:postid,commentnum:commentnum};
 return content;
}
function getid(url){//爬取首页文章链接
 return new Promise(function (resolve,reject) {
 http.get(url,function (res) {
 var html = '';
 res.on('data',function(data) {
 html+=data;
 });
 res.on('end',function () {
 var content=filterchapters1(html)
 resolve(content);
 
 })
}).on('error',function () {
 reject(e);
 console.log('抓取出错!')
 })
})
}
function getpageAsync(url) {//爬取单个页面内容
 return new Promise(function (resolve,reject) {
 console.log('正在爬取……'+url)
 http.get(url,function (res) {
 var html = '';
 res.on('data',function(data) {
 html+=data;
 });
 res.on('end',function () {
 resolve(html);
 
 })
 }).on('error',function () {
 reject(e);
 console.log('抓取出错!')
 })
 })
}
getid(url)
 .then(function(postid){
 return new Promise(function (resolve,reject) {
 var pageurls=[];
 postid.forEach(function (id) {
 pageurls.push(getpageAsync(id));
 })
 resolve(pageurls);
 })
 })
 .then(function(pageurls){
 return new Promise.all(pageurls);//让promise对象同时开始运行
 })
 .then(function (pages) {
 var coursesData=[];
 pages.forEach(function (html) {
 var courses=filterchapters(html);
 coursesData.push(courses);
 })
coursesData.forEach(function(v){
 console.log('标题:'+v.tit+"\n地址:"+v.url+"\n评论:"+v.commentnum)
 })
 })

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用node.js实现爬虫能有所帮助,如果有疑问大家可以留言交流。

华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?