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

简介: 需要安装nodejs和cheerio模块实现了自定义用户,自定义页数,抓取完毕自动停止无重复可以按需修改文章类和评论的类名 用法:首先 npm install cheerio 执行 node cnblog [username]文件结果保存在res/cnblog.

需要安装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) }) }

  

 

相关文章
|
2天前
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
4月前
|
数据采集 前端开发 JavaScript
Objective-C爬虫:实现动态网页内容的抓取
Objective-C爬虫:实现动态网页内容的抓取
|
4天前
|
数据采集
爬虫抓取数据过程中代理IP频繁掉线:以Kookeey为例的解决方案
在数据抓取过程中,代理IP不可或缺,但其频繁掉线问题严重影响效率。本文以Kookeey为例,探讨解决之道:1)深入理解掉线原因,审慎选择稳定的服务商; 2)保持代理IP更新并合理配置使用参数; 3)在程序中集成错误处理与重试逻辑; 4)必要时升级至更优质的服务; 5)主动与服务商沟通寻求支持; 6)探索替代抓取策略,如调整抓取节奏或采用分布式架构。这些措施有助于显著提升抓取成功率及稳定性。
|
27天前
|
数据采集 资源调度 JavaScript
Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
【8月更文挑战第4天】Node.js 适合做高并发、I/O密集型项目、轻量级实时应用、前端构建工具、命令行工具以及网络爬虫和数据处理等项目
35 5
|
2月前
|
数据采集 Web App开发 Java
Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截
Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截
|
3月前
|
数据采集 存储 数据挖掘
Python网络爬虫实战:抓取并分析网页数据
使用Python的`requests`和`BeautifulSoup`,本文演示了一个简单的网络爬虫,抓取天气网站数据并进行分析。步骤包括发送HTTP请求获取HTML,解析HTML提取温度和湿度信息,以及计算平均温度。注意事项涉及遵守robots.txt、控制请求频率及处理动态内容。此基础爬虫展示了数据自动收集和初步分析的基础流程。【6月更文挑战第14天】
168 9
|
3月前
|
数据采集 存储 编解码
技术笔记:Node.jsmm131图片批量下载爬虫1.01增加断点续传功能
技术笔记:Node.jsmm131图片批量下载爬虫1.01增加断点续传功能
22 0
|
3月前
|
数据采集 Web App开发 XML
详尽分享用Node.js写爬虫,撸羞羞的图片
详尽分享用Node.js写爬虫,撸羞羞的图片
25 0
|
3月前
|
数据采集 存储 JavaScript
深入Node.js:实现网易云音乐数据自动化抓取
深入Node.js:实现网易云音乐数据自动化抓取
|
4月前
|
数据采集 JavaScript 数据可视化
Node.js爬虫在租房信息监测与分析中的应用
Node.js爬虫在租房信息监测与分析中的应用
下一篇
云函数