みんなの就職活動日記でAutoPagerizeを有効に

2009/09/01 21:50くらいに追記
早くも添削されてた。(?:bbs|\?action=bbs) -> (?:\?action=)?bbs
bbsが重複してるから、?action= があってもなくても良しにすればスッキリ。なるほど


id:os0x さんに助言をいただいたので早速修正。string-length(@class)=0 -> not(@class)
意味的にもこっちの方がいいですね。


社会人(中途)も継ぎ足されるようにした。www -> (?:www|shigoto)
こっちはid振ってなかったので、どちらでも動くように div[@align="right"] 起点で要素取得するように変更。
/追記


就活中は、お世話になったサイトですがテーブルレイアウトでnextリンクが無くて、AutoPagerizeで継ぎ足しできないと嘆いていました。
でも、不可能ではないだろってことで http://www.zvon.org/xxl/XPathTutorial/General/examples.html 見ながら書いてみた。http://wedata.net/items/29588
何か不都合があれば言ってください。


かなり当て決めですが、現在のページがオレンジ色で示されるのを起点にして、親要素に移動して、さらに兄弟要素へ移動することで、nextリンクへたどり着いています。


書き込み自体は、○○の日記というのがclass無しH3要素だったので、 string-length(@class)=0 で取得。本文は、 p[@class="bbs"] で取得できるので | で繋いでオア検索で引っ張ってます。

before

{
  url:         '^http://www\.nikki\.ne\.jp/(?:bbs|\?action=bbs)',
  nextLink:    'id("mainArea")//font[@color="#cc6600"]/parent::b/following-sibling::b[1]/a',
  pageElement: 'id("mainArea")//h3[string-length(@class)=0]|id("mainArea")//p[@class="bbs"]',
  exampleUrl:  'http://www.nikki.ne.jp/?action=bbs&pid=4755&job_type=&limit=100'
}

now

{
  url:         '^http://(?:www|shigoto)\.nikki\.ne\.jp/(?:\?action=)?bbs',
  nextLink:    '//div[@align="right"]//font[@color="#cc6600"]/parent::b/following-sibling::b[1]/a',
  pageElement: '//div[@align="right"]//following-sibling::h3[not(@class)]|//div[@align="right"]//following-sibling::p[@class="bbs"]',
  exampleUrl:  'http://www.nikki.ne.jp/?action=bbs&pid=4755&job_type=&limit=100'
}


始め、?を\\でエスケープしてたのですが、jsonで来るときにもエスケープされるので結果\\\になって動かなかった。
autopagerize.user.jsに直書きと勝手が違うので注意。


あと、matchにStringオブジェクト渡した場合とRegExpオブジェクト渡した場合の挙動も違うので注意。

// String
'?'.match('?');   // SyntaxError
'?'.match('\?');  // SyntaxError
'?'.match('\\?'); // ["?"]

// RegExp
'?'.match(/?/);   // SyntaxError
'?'.match(/\?/);  // ["?"]
'?'.match(/\\?/); // [""]