Node.jsでBoilerpipeを利用する

Boilerpipeとは

https://code.google.com/p/boilerpipe/

ページの記事部分を抽出するJavaのライブラリ。画像とかも抽出できる。
SmartNewsやGunosyなど、最近のキュレーションっぽいサイトやアプリを作るのに利用できそう。

node-boilerpipe

https://www.npmjs.org/package/boilerpipe
node-javaを利用してBoilerpipeをNode.jsから呼び出せるパッケージ。

使ってみる

普通にREADMEを読めば使い方がわかる。ハマりそうなポイントは

  • 文字化け回避のため、requestパッケージでコンテンツを取得しておく
  • ただし、その際にboilerpipe.setHtml()だけ指定してもダメ
  • boilerpipeでrequestしなくてもsetUrl()は指定すること
  boilerpipe.setUrl(url); // requestで取得していたとしても必要
  boilerpipe.setHtml(html); 

サンプルコード

https://github.com/yuzone/nodejs-boilerpipe-sample

実行結果

$ node main.js
セガは2011年8月31日、“龍が如くスタジオ”の発足記者発表会を開催。同スタジオで手掛ける新作タイトルの情報も続々と明らかにされた。
(中略)
――龍が如くスタジオの設立によって、いままでと変わるところはどこでしょうか?
(C)SEGA

[ { src: 'http://www.famitsu.com/news/201108/images/00049362/s202_TGyn5gheDxdDfhG2TiWW49S6ViKnxM8c.jpg',
    width: 179,
    height: 268,
    alt: 'DSC_0520',
    area: 47972 },
(中略)
  { src: 'http://www.famitsu.com/news/201108/images/00049362/s1112_XCc8dK7x4e68EQVOXiU5CFK8N12DqBte.jpg',
    width: 250,
    height: 166,
    alt: 'DSC_0505',
    area: 41500 },
  { src: 'http://www.famitsu.com/news/201108/images/00049362/s1113_SAzV7hLvonrf719FG324OS4jWNkP9GQp.jpg',
    width: 400,
    height: 266,
    alt: 'DSC_0539',
    area: 106400 } ]
Finished.
[ 'request ok', 'boilerpipe.getText', 'boilerpipe.getImages' ]