基於superagent 與 cheerio 的node簡單爬蟲


最近重新玩起了node,便總結下基本的東西,在本文中通過nodesuperagentcheerio來抓取分析網頁的數據。

目的 

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的異步並發。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM