Node.jsでスクレイピングするにはcheerio-httpcliが便利!とのことなので、試してみた。
cheerio-httpcliとは?
Node.jsでWEBページのスクレイピングを行う際に必要となる文字コードの変換とHTMLのパースを行った後のオブジェクトを取得できるHTTPクライアントモジュールです。
特徴
* 取得先WEBページの文字コードを自動で判定してHTMLをUTF-8に変換してくれる。
* UTF-8に変換したHTMLをcheerio.load()でパースしたオブジェクトも取得できる。
* Node.jsお馴染みのコールバック形式と最近の流行であるプロミス形式どちらにも対応。
* cheerioのprototypeを拡張し、フォームの送信やリンクのクリックをエミュレート。
* ブラウザ指定による簡単User-Agent切り替え機能。
* 現在のクッキーの内容を簡単に取得できる(読み取り専用)。
インストール
npm install -g cheerio-httpcli
サンプル
yahooニュースを取得するサンプルを書いてみます。
・test.coffee
client = require('cheerio-httpcli') client.fetch 'http://www.yahoo.co.jp/', {}, (err, $, res)-> $('ul.emphasis > li > a').each ()-> # jQueryライクに要素を検索できる!! console.log $(this).text()
わずか4行。 jQueryライクに要素を検索できるしすばらしい。 実行する。
coffee test.coffee
これで取れる。
また、callback関数の第3引数がrequestモジュールのresponseオブジェクトなので
console.log res.headers
とすればレスポンスヘッダを参照できるし、console.log res.statusCode
でステータスコードを取ることもできる。ありがたい。