Node.js实现单页面爬虫
在imooc网上跟着老师写了两个爬虫,一个最简单的直接爬整个页面,一个完善版把章节标题和对应编号打出来了。
创新互联建站是一家专业提供江川企业网站建设,专注与网站制作、成都做网站、HTML5建站、小程序制作等业务。10年已为江川众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
看完之后,自己也想写一个爬虫,用自己的博客做测试,虽然结果并没有很成功- -,还是把代码放上来。
目标是抓取章节的标题。
博客页面:
对应标签:
页面源代码:
经过分析,我们应该要抓取class=artHead的
,往下还有一个没有类的
,然后找到它的标签下子标签的内容,就是章节的名字。
标签下子标签的内容,就是章节的名字。 上代码:
//引入http模块
var http = require('http');
//确定要抓取的页面
//debug:本来写了qmkkd.blog.51cto.com,一直出错,在前面加上http就好了。
var url = '';//这里的url是'http://qmkkd.blog.51cto.com';,博客显示不出来,有毒
//引入cherrio模块,类似服务器端的jquery
var cheerio=require('cheerio');
function filterChapters(html){
//将html变成jquery对象
var $ = cheerio.load(html);
var artHeads = $('.artHead');
var blogData=[];
artHeads.each(function(item){
var artHead = $(this);
//获取文章标题
var artTitle = artHead.find('h4').children('a').text();
blogData.push(artTitle);
})
return blogData;
}
function printBlogInfo(blogData){
blogData.forEach(function(item){
var artTitle = item;
console.log(item+'\n');
})
}
http.get(url,function(res){
var buffers=[];
var nread = 0;
res.on('data',function(data){
buffers.push(data);
nread+=data.length;
});
//网上找到的处理中文乱码问题的方法,但好像没有解决T_T
//之后还采用了bufferhelper类,好像也不对=-=
//应该是基础不好的问题,暂时debug不了,先放着
res.on('end',function(){
var buffer =null;
switch(buffers.length){
case 0:buffer=new Buffer(0);
break;
case 1:buffer=buffers[0];
break;
default:
buffer = new Buffer(nread);
for(var i=0,pos=0,l=buffers.length;i
当前标题:Node.js实现单页面爬虫
当前地址:http://scyanting.com/article/iphoho.html
当前标题:Node.js实现单页面爬虫
当前地址:http://scyanting.com/article/iphoho.html