[Python] Webstemmerを試してみた
2009年5月22日
サイトをクロール&スクレイピングして記事を抽出するツール を試してみました。
ドキュメントを読むと、以下の特徴があるよう。
(1) 自動で本文抽出を行う
レイアウトを学習してくれる仕組みなので、どんなサイトでも自動的に解析できる。
(2) Pure Python製なので、インストールが楽!
ソースをDLして解凍するだけで完了、yumで入っているpythonで動く。
(3) 出来が良い
オプション等も細かく整備されており、丁寧に作りこまれている感じがする。
おおー、良さそうだ! 試してみよう。
それぞれ別のPythonバッチを叩く必要がある。
(1) クロール
python ./textcrawler.py -o kjirou -m1 -c utf-8 http://kjirou.sakura.ne.jp/mt/archives.html
記事の索引ページとなるURLを指定して、その1階層下が記事である
・・・というように、抽出対象の記事リストを指定します。
(索引URLは当サイトのアーカイブページ、階層は-mオプションで指定)
実行結果として、kjirou.YYYYMMDDHHIISS.zip という、その記事情報の詰まったファイルが生成されます。
(2) レイアウト解析
python ./analyze.py kjirou.200905211722.zip > kjirou.pat
クロールした記事情報から、レイアウトを解析します。
解析結果をリダイレクトで保存する必要があり、今回は kjirou.pat として保存しています。
(3) 記事抽出
python ./extract.py -c utf-8 kjirou.pat kjirou.200905211722.zip > kjirou-result.txt
クロール記事とレイアウト解析結果を引数に入れて、目的である記事抽出を行います。
kjirou-result.txtは例えばこのような内容です。
!UNMATCHED: 200905211722/kjirou.sakura.ne.jp/mt/2007/08/ !MATCHED: 200905211722/kjirou.sakura.ne.jp/mt/2009/05/good_by_lingr.html PATTERN: 200905211722/kjirou.sakura.ne.jp/mt/2007/09/vpsror.html SUB-3: « [正規表現] ややこしい例に遭遇 | メイン SUB-5: good_by_lingr_mod posted by (C)kjirou SUB-5: お世話になりました。 SUB-5: 俺がエンジニアリングで成果を出せたら、 SUB-5: Special Thanks の欄に "Lingr" と入れざるを得ない。
“kjirou.sakura.ne.jp/mt/2007/08/”のページは、記事ではないと判断されて解析されていません。
“kjirou.sakura.ne.jp/mt/2009/05/good_by_lingr.html” は記事だと認識され、本文抽出が成功しています。
・・・すげぇ! 俺より賢い!!
(タイトルの抽出に失敗しているけど・・・多分オプションでどうにかなるはず)
(1) 遅い
割と各処理に時間が掛かる。
また、計算量が記事数の二乗で増加してゆく部分があり、そこを調整しないと大変なことになる。
(2) メンテが止まっている
2007/9を最後に更新が止まっている。
ですが、ハマればちゃんと動くので、
自作クローラの前に試すのはいいと思います。
それでは、素晴らしきチュルチュル人生を!