Nodejs爬虫実戦(一):引き出し新熱ランキング
3488 ワード
NodeJsとは
Node.jsはChrome V 8エンジンベースのJavaScript実行環境です.Node.jsは、イベント駆動で非ブロックI/Oのモデルを使用し、軽量で効率的です.Node.jsのパッケージマネージャnpmは、世界最大のオープンソースライブラリ生態系です.
私たちの最初のnodejsプロジェクトを開きます
まずnodejsの公式サイトに行ってnodejsをダウンロードしてインストールすることができますhttp://nodejs.cn/.インストールが完了したら、npmでexpressフレーム
爬虫類依存
工欲善其事必先利其器,完成nodejs爬虫類には2つのライブラリが必要である:superagent(http://visionmedia.github.io/superagent/)はhttp側のライブラリであり、getまたはpostリクエストを開始できます.cheerio(https://github.com/cheeriojs/cheerio )は、Webページからcss selectorでデータを取得するためのNode.js版のjqueryと理解でき、jqueryと同じように使用されています.
引き出しの新しいホットリストのデータをつかむ
まず簡単なことから、引き出しの新しい熱ランキングを例に挙げましょう.アクセスhttp://dig.chouti.com/ブラウザのデバッガで引き出しのdom構造を見ると、.part 2のクラスに共有用の属性があり、jqueryの構文でタイトル、ピクチャ、ハイパーリンクの属性を直接読み取ることができます.
新しいホットランキングデータはidが「content-list」のdivにあることがわかり、content-listを展開してデータの表示を続行します
classが「part 2」のdivにshareが入っているのを見つけた
Node.jsはChrome V 8エンジンベースのJavaScript実行環境です.Node.jsは、イベント駆動で非ブロックI/Oのモデルを使用し、軽量で効率的です.Node.jsのパッケージマネージャnpmは、世界最大のオープンソースライブラリ生態系です.
私たちの最初のnodejsプロジェクトを開きます
まずnodejsの公式サイトに行ってnodejsをダウンロードしてインストールすることができますhttp://nodejs.cn/.インストールが完了したら、npmでexpressフレーム
npm install express --save
をインストールします.//app.js
// `express`
var express = require('express');
// express app 。
var app = express();
// app , get、post、put/patch、delete, get , `/` handler 。
// handler req res , request response。
// request , query ,body ,headers , req 。
// res , , , header , 。 #send , 。
app.get('/',function(req,res){
res.send('hello world');
})
// app , 3000 。 , listen , , 。
app.listen(3000, function () {
console.log('app is listening at port 3000');
});
node app.js
を実行してアクセスhttp://localhost:3000/hello world
が見えます爬虫類依存
工欲善其事必先利其器,完成nodejs爬虫類には2つのライブラリが必要である:superagent(http://visionmedia.github.io/superagent/)はhttp側のライブラリであり、getまたはpostリクエストを開始できます.cheerio(https://github.com/cheeriojs/cheerio )は、Webページからcss selectorでデータを取得するためのNode.js版のjqueryと理解でき、jqueryと同じように使用されています.
npm install superagent --save
npm install cheerio --save
をそれぞれ取り付けます.引き出しの新しいホットリストのデータをつかむ
まず簡単なことから、引き出しの新しい熱ランキングを例に挙げましょう.アクセスhttp://dig.chouti.com/ブラウザのデバッガで引き出しのdom構造を見ると、.part 2のクラスに共有用の属性があり、jqueryの構文でタイトル、ピクチャ、ハイパーリンクの属性を直接読み取ることができます.
新しいホットランキングデータはidが「content-list」のdivにあることがわかり、content-listを展開してデータの表示を続行します
classが「part 2」のdivにshareが入っているのを見つけた
app.js
// `express`
var express = require('express');
// `superagent`
var superagent = require('superagent');
// `cheerio`
var cheerio = require('cheerio');
// express app 。
var app = express();
// app , get、post、put/patch、delete, get , `/` handler 。
// handler req res , request response。
// request , query ,body ,headers , req 。
// res , , , header , 。 #send , 。
app.get('/', function (req, res, next) {
// superagent http://dig.chouti.com/
superagent.get('http://dig.chouti.com/')
.end(function (err, sres) {
//
if (err) {
return next(err);
}
// sres.text html , cheerio.load
// jquery , `$`
// jquery
var $ = cheerio.load(sres.text);
var items = [];
$('#content-list .part2').each(function (idx, element) {
var $element = $(element);
items.push({
title: $element.attr('share-title'),
href: $element.attr('href'),
img: $element.attr('share-pic')
});
});
res.send(items);
});
});
// app , 3000 。 , listen , , 。
app.listen(3000, function () {
console.log('app is listening at port 3000');
});
node app.js
アクセスの実行:http://localhost:3000/,キャプチャしたデータが直接json形式で表示されていることがわかる.