简易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) }) }

  

 

相关文章
|
3月前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
2月前
|
数据采集 安全 API
高级技术文章:使用 Kotlin 和 Unirest 构建高效的 Facebook 图像爬虫
高级技术文章:使用 Kotlin 和 Unirest 构建高效的 Facebook 图像爬虫
|
3月前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
102 0
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
3月前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
4月前
|
数据采集 Python
python爬虫抓取91处理网
本人是个爬虫小萌新,看了网上教程学着做爬虫爬取91处理网www.91chuli.com,如果有什么问题请大佬们反馈,谢谢。
51 4
|
4月前
|
数据采集 Web App开发 JavaScript
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
本文介绍了如何使用Selenium爬虫技术抓取抖音评论,通过模拟鼠标悬停操作和结合代理IP、Cookie及User-Agent设置,有效应对动态内容加载和反爬机制。代码示例展示了具体实现步骤,帮助读者掌握这一实用技能。
250 0
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
|
4月前
|
数据采集
爬虫案例—抓取找歌词网站的按歌词找歌名数据
爬虫案例—抓取找歌词网站的按歌词找歌名数据
83 0
|
3月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
189 6
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
306 4
|
7月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
118 4

热门文章

最新文章