FrontPage  ページ一覧  検索  更新履歴  RSS  ログイン

フィルタ

rAntenna - フィルタ

rAntenna は HTTP ヘッダによって更新時刻が取得できなかった場合、コンテンツ(ペー ジの中身)から以下の方法で更新時刻を取得しようとします。

  1. まず、コンテンツから更新時刻らしき文字列を検索し、見つかった場合はそれを更新時刻とする。
  2. 見つからなかった場合は前回巡回した時とのコンテンツの比較を行い、異なっていれば更新時刻とする。

このとき、コンテンツのどの部分を更新時刻を取得する対象とするかを指定するのがフィルタ機能です。

フィルタが設定されていない場合は、時刻文字列の検索はコンテンツ全体、前回との比較はコンテンツから全てのタグとスペース・改行を取り除いたものが対象となります。

簡単な使い方

フィルタの設定は、以下のように [URL, フィルタ] のペアを conf ファイルの @filters という項目に設定します。

@filters = [
['http://www1.example.com/', include_range('start','end')],
['http://www2.example.com/', exclude_range('start','end')],
]

フィルタはいくつでも設定できますが、同じ URL のフィルタが複数存在する場合は、最 初の1つのみが有効となります。

フィルタには、以下の2つの関数が使用できます。

include_range('start','end')
'start'~'end' を対象とします。'start' と 'end' は任意の文字列が使用できます。'start'~'end' が複数含まれている場合は、最初の1つ のみが対象となります。
exclude_range('start','end')
'start'~'end' を対象外とします。'start' と 'end' は任意の文字列が使用できます。'start'~'end' が複数含まれている場合は、最初の1 つのみが対象外となります。

URL に正規表現を使う

URL には、文字列で URL を指定する以外に、以下のように正規表現を使用して URL の断片を指定することができます。

[/example\.com/, include_range('start','end')],

URL が複数の正規表現にマッチした場合は、最初の1つのみが有効となります。

フィルタに正規表現を使う

フィルタには上記の関数以外に、任意の正規表現を使用することができます。

例えば 'start'~'end' を対象とする場合は、以下のように設定します。

['http://www.example.com/', /start.+?end/m],

'start' と 'end' 自体を対象としたくない場合は、以下のように括弧を使います。

['http://www.example.com/', /start(.+?)end/m],

括弧が複数ある場合は、括弧の中身を連結したものが対象となります。

なお、正規表現にマッチする箇所が複数存在する場合は、最初の1つのみが対象となります。

フィルタに Proc クラスを使う

フィルタには、任意のProc クラスのインスタンスを指定することもできます。

例えばコンテンツから全てのタグを取り除いたものを対象とする場合は、以下のように設定します。

['http://www.example.com/', Proc::new{|s| s.gsub(/<.+?>/m,'')}],

フィルタの指定方法の中では、この方法が最も柔軟です。

更新日時:2011/12/16 22:55:25
キーワード:
参照:[rAntenna] [要望リスト]