[Seasar-user:21692] S2RobotでリダイレクトURLと元ページの関連性の取得について

kubo [E-MAIL ADDRESS DELETED]
2013年 8月 16日 (金) 17:27:47 JST


久保(jflute)です

S2Robotの利用を検討していまして、
ちょっと確認したいことがあります。

/A/, /B/, /C/ という三つのURLが存在するとして、
/A/ の画面の中に /B/ というURLへのリンクがあって、
でも、/B/ にアクセスすると /C/ にリダイレクトする
という構造になっているとします。

/A/ - (リンク) /B/ -> (リダイレクト) /C/

すると、ACCESS_RESULT に、
- - - - - - - - - - - -
| URL | PARENT_URL
| /A/ | null
| /C/ | /B/
- - - - - - - - - - - -
という形で登録されるかと思いますが、
A と B の関連が取得できないかなぁと。
(要は、C は A から参照されているという情報)

A のクロール結果を頑張って辿ればいけるかもしれませんが、
できればテーブルのリレーションだけでいけないかなと思い、
追っかけてみたのですが、現状では無理なのかなと。
URL_QUEUEは一時的なので終わったら消えてしまいますし。

ということで、S2RobotThread を拡張して、
(S2ClassBuilderを使って +.dicon でオーバーライド)
storeChildUrl()をオーバーライドして、
CrawlingParameterUtilのスレッドローカルから、
/A/ を取得して /C/-/B/ との関連情報を、
別途独自のテーブルに保存するようにしてみました。

これでなんとか想定したデータは取得できているようですが、
ちょっと強引さが否めないので、フィードバックも兼ねて、
他に良い方法がないかどうかを確認したいと考えましたが、
いかがでしょうか?

#
# DBFluteを内部で使って頂いてるので、
# ログ見れば何やってるのかわかりやすくて良いですね(^^。
#


Seasar-user メーリングリストの案内