Plaggerで全文取得 (4)・電撃オンラインのニュースとランキング情報を取得するPlaggerで全文取得 (4)・電撃オンラインのニュースとランキング情報を取得する

PlaggerEntryFullTextプラグイン用に自分で作って使ってるyamlファイルをちょぼちょぼと公開します。いわゆる野良EFTってやつです。


電撃オンライン

ゲームの総合情報サイト『電撃オンライン』のニュース記事と週間ランキングデータを取得します。
特定のハードに関する情報だけ欲しい場合は適宜タイトルからフィルタリングして不要な情報を弾いて使います。

PATH: assets/plugins/Filter-EntryFullText/DengekiOnline.yaml

# dengeki online news
# http://www.dengekionline.com/index.html
# http://www.dengekionline.com/data/rss/

author: Kazuya@glassleaf
handle: http://www.dengekionline.com/
extract: <B><FONT color=#ffffff>(.*?)(.*?FEEDs--->(.*?)<!---\[NEWS\] FEEDe--->|<div id="soft_main">(.*?</table>)
extract_capture: date body body2
extract_date_format: %Y年%m月%d日
extract_after_hook: |
  $data->{body} =~ s/width=510//;
  $data->{body} =~ s|CATCHs--->.*?CATCHe||s;
  $data->{body} .= $data->{body2}

ランキングデータのページはテーブルレイアウトで色分けなどをしているのですが、全文取得データにはCSSが含まれないので多少読みにくくなります。

正規表現のOR条件(|)でニュース記事のページにマッチした場合とランキングのページにマッチした場合のデータを別の変数(body,body2)に入れています。
そしてextract_after_hook の最後でbodyとbody2の内容をひとつにまとめて最終的な出力データにしています。
正規表現はそれほど詳しくないので複数のHTMLパターンがあるサイトにすべてマッチさせる方法はこれ以外に知りません。
だから、もっとシンプルでスマートな方法があるのかもしれません。

今回も日時取得の部分で正規表現内に日本語を使用していますので保存する文字コードに気をつける必要があります。
文字コードはUTF-8、改行コードはLFという感じで。
保存する文字コードを間違えていると全文取得に失敗します。
YAMLファイルは正しくてもなぜかマッチングに失敗する時にたいてい陥ってるハマリパターンです。

ブックマークに追加する

Comments and Trackbacks

このブログ記事について

このページは、Kazuyaが2007年6月14日 20:47に書いたブログ記事です。

ひとつ前のブログ記事は「旅人よ、行きて伝えよ、ラケダイモンの人々に。」です。

次のブログ記事は「Plaggerで全文取得 (5)・ファミ通.comのTVゲーム関連記事とランキングを取得する」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。