undefined

bokuweb.me

Node.jsでスクレイピングするならcheerio-httpcliが超快適だったよってお話

Node.jsでスクレイピングするにはcheerio-httpcliが便利!とのことなので、試してみた。

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でステータスコードを取ることもできる。ありがたい。