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

需要安装nodejs和cheerio模块

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

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

用法:

首先 npm install cheerio

执行 node cnblog [username]

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

//cnblog.jsvar 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)
	})
}

  

时间: 2025-01-06 19:28:59

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

简单爬虫-抓取博客园文章列表

原文:简单爬虫-抓取博客园文章列表 如果使用对方网站数据,而又没有响应的接口,或者使用接口不够灵活的情况下,使用爬虫在合适不过了.爬虫有几种,对方网站展示形式有几种都是用分析,每个网站展示有相似的地方,有不同的地方. 大部分使用httpRequst就能完成,不管是否添加了口令.随即码.请求参数.提交方式get或者post.地址来源.多次响应等等.但是有些网站使用ajax如果是返回json或固定格式的也好处理,如果是很复杂的,可以使用webbrower控件进行抓取,最后正则解析,获取所需要的数据即

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

抓取目标:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要实现的功能: 抓取博客所有的文章标题,超链接,文章摘要,发布时间 需要用到的库: node.js自带的http库 第三方库:cheerio,这个库就是用来处理dom节点的,他的用法几乎跟jquery用法一模一样,所以有了这个利器,写一个爬虫就非常简单 准备工作: 1,npm init --yes 初始化package.json 2,安装cheerio:npm install cheerio --sav

Python爬虫爬取博客园并保存

Python爬虫爬取博客园并保存        爬取博客园指定用户的文章修饰后全部保存到本地 首先定义爬取的模块文件: crawlers_main.py 执行入口 url_manager.py url管理器 download_manager.py 下载模块 parser_manager.py html解析器(解析html需要利用的内容) output_manager.py 输出html网页全部内容文件(包括css,png,js等) crawlers_main.py 执行入口 1 # coding

运用python抓取博客园首页的所有数据,而且定时持续抓取新公布的内容存入mongodb中

原文地址:运用python抓取博客园首页的所有数据,而且定时持续抓取新公布的内容存入mongodb中 依赖包: 1.jieba 2.pymongo 3.HTMLParser # -*- coding: utf-8 -*- """ @author: jiangfuqiang """ from HTMLParser import HTMLParser import re import time from datetime import date im

运用python抓取博客园首页的全部数据,并且定时持续抓取新发布的内容存入mongodb中

原文地址:运用python抓取博客园首页的全部数据,并且定时持续抓取新发布的内容存入mongodb中 依赖包: 1.jieba 2.pymongo 3.HTMLParser # -*- coding: utf-8 -*- """ @author: jiangfuqiang """ from HTMLParser import HTMLParser import re import time from datetime import date im

.NET Core 实现定时抓取博客园首页文章信息并发送到邮箱

前言 大家好,我是晓晨.许久没有更新博客了,今天给大家带来一篇干货型文章,一个每隔5分钟抓取博客园首页文章信息并在第二天的上午9点发送到你的邮箱的小工具.比如我在2018年2月14日,9点来到公司我就会收到一封邮件,是2018年2月13日的博客园首页的文章信息.写这个小工具的初衷是,一直有看博客的习惯,但是最近由于各种原因吧,可能几天都不会看一下博客,要是中途错过了什么好文可是十分心疼的哈哈.所以做了个工具,每天归档发到邮箱,妈妈再也不会担心我错过好的文章了.为什么只抓取首页?因为博客园首页文章

利用Abot 抓取博客园新闻数据

1. 引言 相比于Java而言,基于C#的开源爬虫就少了很多.入行这么多年也从未接触过爬虫.出于兴趣今天给大家介绍一个C# 的爬虫工具Abot. 需要使用可以通过Nuget获取.Abot本身就支持多线程的爬取, 内部使用CsQuery来解析爬取到的Html文档.熟悉jQuery的同学肯定能快速上手CsQuery, 它就是一个C#版本的jQuery. 这里以爬取博客园当天的新闻数据为例,看看如何使用Abot. 2. 博客园新闻页面 http://news.cnblogs.com/ 这是博客园的新闻

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

前言 说到python,对它有点耳闻的人,第一反应可能都是爬虫~ 这两天看了点python的皮毛知识,忍不住想写一个简单的爬虫练练手,JUST DO IT 准备工作 要制作数据抓取的爬虫,对请求的源页面结构需要有特定分析,只有分析正确了,才能更好更快的爬到我们想要的内容. 打开博客园任何一个新闻页面,比如https://news.cnblogs.com/n/570973/,思路是通过这个源页面,并且根据页面中的“上一篇”.“下一篇”等链接,源源不断的爬取其它新闻内容. 浏览器访问https://

java爬虫爬取博客园数据

网络爬虫 编辑 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫. 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General Purpose Web Crawler).聚焦网络爬虫(Focused Web Crawler).增量式网络爬虫(Incremental Web Crawler).深层网络爬虫(Deep We