AOL DiaryをAutoPagerizeる
AOL Diary は Autopagerize 泣かせ - twwpの件。
まずSITEINFOはこんな感じかなぁ。
url: 'http://diary.jp.aol.com/(?:applet/)?\\w+/', nextLink: 'descendant::a[contains(@href,"/archive?")][last()]', pageElement: 'id("mainbox")/div', exampleUrl: 'http://diary.jp.aol.com/juicyfruits/'
url: 'http://diary.jp.aol.com/(?:applet/)?\\w+/', nextLink: 'descendant::a[contains(@href,"/archive?")][last()]', pageElement: 'id("center")/div/*[not(@class="text" or @class="menuRight" or @class="rss")]', exampleUrl: 'http://diary.jp.aol.com/quadrille/'
全然構造が違うページをexampleUrl2にした別SITEINFOに分けたけど、もっとバリエーションありそうな感じ。
で、例によってAutoIncrementer pluginでaddDocumentFilter
window.AutoPagerize.addDocumentFilter(function(doc,req){ var a = getElementsByXPath('descendant::a[starts-with(@href,"./")]',doc); a.forEach(function(a){ a.href = req.replace(/(.*)\/.*/,'$1/') + a.getAttribute('href').replace(/^\.\//,''); }); });
./で始まっている相対パスを絶対パスに書き換え。addDocumentFilterに渡す関数は第2引数にrequestしたURLが入ってくるので、それを使ってパスを作ってみる。