抽出結果は目視で確認します。以下の表で、◯は正常に本文を取得できたもの、△は一部のみ取得できたもの、×は空白や関係ないコンテンツが返ってくるなど正常に取得できたとは言えないものを表します。明らかに処理速度が遅い。筆者は違いを理解していないがv2とetv2という別の手法も使える。言語の情報を使用している。画像や映像を抜き出す機能もある。Bookmarkletという出自のせいか、プレーンテキストではなくHTMLの結果が得られる。type='text/template'>タグ内に格納されており、JavaScriptでレンダリングされているという特殊性からか、eatiht以外の全ライブラリで本文を抽出できませんでした。このため、先日の記事で紹介したSplashを使ってレンダリングしたものからの抽出も試しました。Seesaaブログは唯一エンコーディングがShift_JISで、HTMLの構造がおかしいのかdragnetとgooseで他では起きないエラーが起きました。考察dragnet英語のページでは問題ありませんが、日本語のページでは一部エラーが出ました。改行が失われるので若干使いづらそうです。以下の記事を見て比較を始めたのですが、英語のページでは精度が高いようです。eatiht唯一Bloggerから正確に本文を抽出できましたが、日本語のページの多くではエラーが出て使用できませんでした。処理速度は他のライブラリに比べて10〜50倍程度遅かったです。今回はeatihtという一番古くからあると思われるモジュールを使いましたが、v2とetv2という別のモジュールも使用できます。etv2を使うと日本語のページからもエラーなく本文を取得できましたが、Bloggerからは本文を取得できなくなりました。処理速度が遅いのも変わりません。extractcontent正規表現ベースのシンプルな手法にも関わらず、はてなブログ以外は正しく抽出でき、精度は高かったです。2011年からメンテナンスされていないので大丈夫かと思っていましたが、2.7で実行時にエラーが発生することはありませんでした。Adsense用のコメントによって本文を抽出するための正規表現が間違っているのが原因のようです。forkされた以下のものを使うと正常に取得できますが、Google検索しても見つからないので難しい気がします。https://github.com/petitviolet/python-extractcontentgoose基本的にエラーにはならないものの、日本語のページからはまったく本文を抽出できませんでした。言語の設定があるので、予めWebページの言語がわかっている場合には指定してやることでうまく取得できるのかもしれません。SeesaaブログはHTMLが壊れているためか、再帰呼出しの回数が上限を超えてRuntimeErrorになりました。readabilityBlogger以外からは正しく本文を抽出できました。3にも対応しており、使いやすそうです。細かい点ですが、本文として取得した文字列の前後に空白が残っており、自分でstripする必要がありそうです。Bookmarkletという出自のせいか、取得できるのはプレーンテキストではなくHTMLです。プレーンテキストが欲しい場合には自分でタグを削除する必要があります。Webstemmerを使ってBloggerから本文を抽出するこれまで紹介したような、ルールに従って単一のページから本文を取得する手法のほかに、似た構造の複数のページを比較することで本文を取得する手法もあります。この手法では、最終更新が2009年とやや古いですが、Webstemmerが有名なようです。Webstemmerを使って、ルールベースのライブラリが苦手としていたBloggerのHTMLから本文を取得してみます。公式ページに公開されているバージョン0.7.1では以下の問題があったので、修正したものを使用しました。2.7では動かないHTTPSのWebページをクロールできない。以下のコマンドでインストールできます。https://github.com/orangain/webstemmer/archive/master.tar.gz#egg=webstemmer以下のように実行できます。アーカイブページが大量にクロールされるので時間がかかります。googleblog.txt以下のようにいい感じに取得できました。3にも対応しているreadabilityが良さそうです。検証に使用するサンプルによって結果は変わってくるので、あくまで参考と捉えてください。extractcontentは正規表現ベースの単純なスクリプトで高速かつ精度よく本文を抽出できます。Python版はGoogle検索のトップに引っかかるものは不具合があり、メンテナンスされているとも言えないので、人には勧めづらいです。Webstemmerはアプローチが異なりますが、複数のページをクロールできる場合には精度よく本文を取得できそうです。(1)はてなブログをはじめよう!mi_kattunさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。