基於superagent 與 cheerio 的node簡單爬蟲

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

目的 

superagent 抓取網頁html

cheerio 分析網頁node

準備

Node(個人6.0jquery

三個依賴, express(4X),superagent cheeriogit

文檔參考

superagent(http://visionmedia.github.io/superagent/ ) 是個 http 方面的庫,能夠發起 get post 請求。github

cheerio(https://github.com/cheeriojs/cheerio )爲服務器特別定製的,快速、靈活、實施的jQuery. 用來從網頁中以 css selector 取數據,使用方式跟 jquery 同樣。express

代碼

那麼我將抓取本身博客的數據。(有興趣的朋友能夠錦上添花一下,用正則篩選閱讀數很多於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的異步併發。app

相關文章
相關標籤/搜索