輸出 CNode(https://cnodejs.org/ ) 社區首頁的全部帖子標題和連接,以 json 的形式。css
安裝依賴 express,superagent 和 cheeriohtml
$ npm install express superagent cheerio --save
superagent是個
http 方面的庫,能夠發起 get 或 post 請求。 https://cnodejs.org/topic/5378720ed6e2d16149fa16bdnode
一個簡單的post
請求,並設置請求頭信息的例子jquery
request .post('/api/pet') .send({ name: 'Manny', species: 'cat' }) .set('X-API-Key', 'foobar') .set('Accept', 'application/json') .end(function(res){ if (res.ok) { alert('yay got ' + JSON.stringify(res.body)); } else { alert('Oh no! error ' + res.text); } });
一個簡單的get
請求git
request .get('/search') .end(function(res){ });
請求方法也能夠經過參數傳遞:github
request('GET', '/search').end(callback);
delete
,head
,post
,put
和別的http
動做均可以使用,來換個方法看看:express
request .head('/favicon.ico') .end(function(res){ });
delete
是一個特列,由於它是系統保留的關鍵字,因此應該用.del()
這個名字:npm
request .del('/user/1') .end(function(res){ });
http
請求默認的方法爲get
,因此就像你看到的,下面的這個例子也是可用的:json
request('/search', function(res){ });
你們能夠理解成一個 Node.js 版的 jquery,用來從網頁中以 css selector 取數據,使用方式跟 jquery 同樣的。api
https://github.com/cheeriojs/cheerio
// 引入依賴 var express = require('express'); var superagent = require('superagent'); var cheerio = require('cheerio'); var app = express(); app.get('/', function(req, res, next) { // 用 superagent 去抓取 https://cnodejs.org/ 的內容 superagent.get('https://cnodejs.org/') .end(function(err, sres) { if (err) { return next(err); } // sres.text 裏面存儲着網頁的 html 內容,將它傳給 cheerio.load 以後,就能夠獲得一個實現了 jquery 接口的變量,咱們習慣性地將它命名爲 `$` // 剩下就都是 jquery 的內容了 var $ = cheerio.load(sres.text); var items = []; var tt = null; $('#topic_list .topic_title').each(function(index, elem) { var $element = $(elem); items.push({ title: $element.attr('title'), href: $element.attr('href'), }); }); res.send(items); }); }); app.listen(3000, function (req, res) { console.log('app is running at port 3000'); });