Skip to content

利用 nodejs 爬取各个博客网站的最新或者最热的博客文章,目前爬取的网站有开发者头条,SegmentFault,极客头条,HTML5 梦工厂, Tutorialzine等网站。在线预览地址

Notifications You must be signed in to change notification settings

hwaphon/toutiaoBlog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

每日头条

介绍

利用 nodejs 爬取各个博客网站的最新或者最热的博客文章,目前爬取的网站有开发者头条,SegmentFault,极客头条,HTML5 梦工厂, Tutorialzine等网站,演示如下

image

工具

  1. SuperAgent : superagent 是一个轻量的,渐进式的 ajax api,可读性好,学习曲线低,内部依赖 nodejs 原生的请求 api,适用于 nodejs 环境下。

  2. cheerio: 一个类似于 JQuery 的后台工具,用于解析 HTML 文档。

  3. Heroku: 部署 nodejs 程序上线的一个平台。

实现过程介绍

提取文档信息的核心代码
superagent.get(toutiaoUrl)
	.end(function(error, sres) {
		var $ = cheerio.load(sres.text);
		var articles = [];
		$('.post .content a').each(function(index, element) {
			var $element = $(element);

			var title = $element.text();
			var href = url.resolve(toutiaoUrl, $element.attr('href'));

			articles.push({
				title: title,
				href: href
			});
		});

		res.send(articles);
	});

首先,利用 superagent 获取开发者头条网页的 html 文档,然后利用 cheerio 对获取到的文档进行解析,即可像 JQuery 操作 HTML 那样获取到我们需要的信息。

对于 SegmentFault,极客头条等网站文章的获取,基本上也和上面类似,只不过针对存取文章位置的不同而使用不同的提取动作而已。

缓存

利用了 sessionStorage 对已经获取到的文档进行会话级缓存,核心代码如下

	if (window.sessionStorage) {
		if (!sessionStorage.getItem(urls[count])) {
			getPostByAJAX(urls[count]);
		} else {
			postsUL.innerHTML = JSON.parse(sessionStorage.getItem(urls[count]));
		}
	} else {
		getPostByAJAX(urls[count]);
	}

About

利用 nodejs 爬取各个博客网站的最新或者最热的博客文章,目前爬取的网站有开发者头条,SegmentFault,极客头条,HTML5 梦工厂, Tutorialzine等网站。在线预览地址

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published