AutoPagerize で正しい SITEINFO を wedata.net リポジトリに登録するコツ
しばらく触れない間に SITEINFO を書く人増えました(wedata の SITEINFO 激重...)
ユーザー増えるのは喜ばしいことなんですが...
- 書いた SITEINFO がいつの間にか消えたり
- 閉じカッコが足りない状態で放置されてたり
激しく orz
wedata に登録する前に自作 SITEINFO の動作確認をしましょう
- AutoPagerize の 40行目付近。コメントを削除し自分の設定を挿入しテスト(SITEINFO に日本語を含む場合、エンコーディングは UTF-8 で保存)
- テストが無事済んだらスクリプトを元に戻し、wedata のリポジトリ に登録(要 OpenID)
- ステータスバーの Greasemonkey 右クリック → [ユーザースクリプトコマンド] → [AutoPagerize - clear cache] してからブラウザをリロード
SITEINFO ワンポイント
- insertBefore 不要なら書かない(必須項目じゃない)
- url は正規表現で書くが、多くの場合で先頭を意味する ^(ハット)から始めた方が末尾に .* と書くよりスマート
- url は正規表現なので .(ドット)を ¥. とエスケープするのを忘れないこと
- nextLink のアンカー(<a> タグ)が複数マッチしても同じ URL を指すなら気にしない
- pageElement は1つの要素、または要素の集合どちらを指定してもよい
- ページ継ぎ足しでレイアウトが崩れるなら pageElement を要素の集合として指定した方がいい
- XPath では id 関数(メチャ速い)を使うよう心がけたい(// から始めるのはなるべく避ける)
- XPath の * と node() の違いを理解し使い分ける(違いについてはこちらを参考)
- XPath で厳密ガチガチに階層構造を / で全て書くより // で省略しつつ書いた方が視認性が良く、同時に柔軟性も確保できることがある(例:div/p/b/a の代わりに div//a)
- SITEINFO が無駄に肥大化させないよう注意する。SITEINFO が既にあるならそれを修正する。可能ならマージする。(下の「SITEINFO 肥大化問題」に続く)
SITEINFO 作成補助ツール for Firefox
- URL の正規表現チェックに Regular Expressions Tester
- pageElement 等の要素調査にDOM Inspector
- DOM Inspector と併用する InspectThis or 類似ツール
- Xpath にマッチする要素数がわかりやすい XPather
- 視覚的に XPath を確認するなら XPath Checker
- Firebug が好きなら FireXPath
SITEINFO 肥大化問題
- SITEINFO の登録数が増加
- wedata.net 内の更新処理が重くなり
- 処理中にブラウザでアクセスするとタイムアウト
- AutoPagerize で clear cache + リロードしても新しい SITEINFO がすぐ適用されない
現在はこういった状態
設計に SITEINFO の肥大化が織り込まれてないのでしょうがないと言えばその通りなんですが...SITEINFO 登録で工夫することはできます。それは...類似した SITEINFO 設定の併合(マージ)
具体的例を挙げます
ITmedia エグゼクティブ1 | ITmedia エグゼクティブ2 |
---|---|
どちらも「ITmedia エグゼクティブ」... URL 指定はほぼ同じ、nextLink は同一、pageElement が違うから分けたようですが...思い出してください
XPath には | があるじゃないですか
したがって pageElement は...
//div[contains(@class, "articles")]/(以下省略)] | id("article_body")
として2つの設定を1つにまとめればよくありません? (スペースで縦棒「|」を挟むとより見やすい)
こうすれば、SITEINFO の肥大化をちょっぴり遅らせることくらいはできます
偉そうなことを言ってますが
以前は迷惑を掛けたことも...
特に、drry さんには正規表現の添削でお世話になりました <(_ _)> アリガタヤ