最近重新玩起了node,便總結下基本的東西,在本文中通過node的superagent與cheerio來抓取分析網頁的數據。
目的
superagent 抓取網頁
cheerio 分析網頁
准備
Node(我的6.0)
三個依賴, express(4X),superagent 和 cheerio。
文檔參考
superagent(http://visionmedia.github.io/superagent/ ) 是個 http 方面的庫,可以發起 get 或 post 請求。
cheerio(https://github.com/cheeriojs/cheerio )為服務器特別定制的,快速、靈活、實施的jQuery. 用來從網頁中以 css selector 取數據,使用方式跟 jquery 一樣。
代碼
那么我將抓取自己博客的數據。(有興趣的朋友可以錦上添花一下,用正則篩選閱讀數不少於400的文章.)
1 var express = require('express'); 2 var superagent = require('superagent'); 3 var cheerio = require('cheerio'); 4 5 var app = express(); 6 app.get('/', function (req, res, next) { 7 superagent.get('http://www.cnblogs.com/LIUYANZUO') 8 .end(function (err, sres) { 9 if (err) { 10 return next(err); 11 } 12 // sres.text 里面存儲着網頁的 html 內容,將它傳給 cheerio.load 之后 13 // 就可以得到一個實現了 jquery 接口的變量,我們習慣性地將它命名為 `$` 14 // 剩下就都是 jquery 的內容了 15 var $ = cheerio.load(sres.text); 16 var items = []; 17 $('.day .postTitle2').each(function (index, element) { 18 var $element = $(element); 19 items.push({ 20 標題: $element.text(), 21 網址: $element.attr('href') 22 }); 23 }); 24 res.send(items); 25 }); 26 }); 27 28 app.listen(4000, function () { 29 console.log('app is listenling at port 4000'); 30 });
在命令行運行,得到截圖
當然這是最簡單的,下一篇我想介紹下node的異步並發。