Ruby で Web ページの本文を抽出する方法

ExtractContent を使えばいい。

ただ、上の記事の ExtractContent は Ruby1.9 以上では動かなかった。正規表現エンジンが変わったからね…。

無ければ自分で修正することを前提に、GitHub で探したら、案の定 1.9 対応版を発見した。

試しにこれを使ってみよう。

Gemfile に

gem "extractcontent", github: "mono0x/extractcontent"

を追加し、bundle でインストール。

使い方は簡単で、本文を抽出したい HTML を ExtractContent.analyse メソッドに渡すだけ。タイトルと本文が返ってきた。

# coding: utf-8
require "open-uri"
require "bundler/setup"
require "extractcontent"

URL = "http://tnakamura.hatenablog.com/entry/2013/06/29/204726"

open(URL) do |io|
  html = io.read
  body, title = ExtractContent.analyse(html)
  puts title
  puts body
end

f:id:griefworker:20130630120833p:plain