简易nodejs爬虫抓取博客园指定用户的文章及浏览量

Posted TXXT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简易nodejs爬虫抓取博客园指定用户的文章及浏览量相关的知识,希望对你有一定的参考价值。

需要安装nodejs和cheerio模块

实现了自定义用户,自定义页数,抓取完毕自动停止无重复

可以按需修改文章类和评论的类名

 

用法:

首先 npm install cheerio 

执行 node cnblog [username]

文件结果保存在res/cnblog.txt

//cnblog.js
var http = require(\'http\') var fs = require(\'fs\') var path = require(\'path\') var cheerio = require(\'cheerio\') var str = \'\'; var n = 1 var byte = 0; grab({ user:process.argv[2] || \'txxt\', /*配置博客园用户名*/ pages:10, /*配置要抓取的总页数*/ cb:function(){saveFile(str) }, postClass:\'.day\', /*文章的类名*/ commentClass:\'.postDesc\' /*文章评论的类名*/ }) /*数据获取*/ function grab(opt) { var prefix = \'http://www.cnblogs.com/\' + opt.user + \'/default.html?page=\' opt.url = prefix + n; http.get(opt.url, function(res) { if(res.socket.bytesRead != byte){ //根据byte大小判断网页,防止重复 var go = true; byte = res.socket.bytesRead } else { var go = false; } var html = \'\'; res.on(\'data\', function(data) { html += data; }) res.on(\'end\', function() { if(go){ str += \'\\r\\n\' + \'第\' + n + \'页开始\' + \'\\r\\n\' filter(html) str += \'\\r\\n\' +\'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\' + \'\\r\\n\'; console.log(\'第\' + n + \'页抓取完毕\'); } }) res.on(\'end\', function() { n = n + 1; if (n <= opt.pages && go) { grab(opt) } else { opt.cb && opt.cb() } }) }).on(\'error\', function() { console.log(\'获取数据出错\') }) function filter(html) { var $ = cheerio.load(html) var post = $(opt.postClass); post.each(function(item) { var title = $(this).find(\'.postTitle a\').text(); str += \'\\r\\n\' + title var foot = $(this).find(opt.commentClass).text(); var reg = /\\(\\d+\\)/ var comment = reg.exec(foot)[0]; comment = comment.replace(\'(\',\'\'); comment = comment.replace(\')\',\'\'); str += \'浏览量>>>>\' + comment }) } } function saveFile(content) { fpath = path.join(__dirname, \'./res/cnblog.txt\') fs.writeFile(fpath, content, function(err) { if (err) { console.log(\'写入失败\') } console.log(str) }) }

  

 

以上是关于简易nodejs爬虫抓取博客园指定用户的文章及浏览量的主要内容,如果未能解决你的问题,请参考以下文章

[js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息

Python爬虫入门教程:博客园首页推荐博客排行的秘密

python学习第一弹:爬虫(抓取博客园新闻)

nodejs爬虫基础

[Python学习] 简单网络爬虫抓取博客文章及思想介绍

教你nodejs爬虫制作知乎专栏RSS抓取程序