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

Shinsuke Sugaya [E-MAIL ADDRESS DELETED]
2013年 8月 21日 (水) 06:24:34 JST


菅谷です。

0.5.8-SNAPSHOTで対応してみました。
自動リダイレクトするかどうかのHTTPステータスを
diconで渡せるようにしました。

参考になるように
https://www.seasar.org/svn/sandbox/s2robot/trunk/s2robot-seo
を久々に手直ししてみました。
s2robot_client.diconでredirectHttpStatusPatternを
適当なパターンにしていただければ良いかと
思います。標準では、子リンク->親リンクの関係は
AccessResultで取得できるかと思いますが、
親リンク->小リンクの関係を保持するのであれば
独自のTransformerを作る必要があるかと思います。
サンプルとして、CustomTransformerを追加しましたが
dicon的にはs2robot_transformer.diconに定義をして
s2robot_rule.diconで適用されるように設定します。
CustomTransformerでは親リンク->小リンクを
ログしているだけですが、データを永続化するのであれば、
ResultDataのdataとして保持することになるかと
思います。

よろしくお願いいたします。

shinsuke

2013年8月18日 23:14 kubo <dbflute @ gmail.com>:
> 久保(jflute)です
>
> 菅谷さん、ありがとうございます。
> ちょっと特殊な要件で申し訳ありませんが、
> 要はリンク構成も取得したい、というところですね。
>
> BやCのクロール自体は後回しでもいいのですが、
> Aのサイトのリンク構成だけをうまく取得できるような
> 仕組みがあるとうれしいかもですね。
>
> もしくは、単純に S2RobotThread 周りを
> 拡張しやすくして頂くだけでもありがたいです。
> (今はスレッドローカルから無理矢理取得してたり)
> 結構、あのクラスの処理をフックしたくなるので。
>
> ひとまず現状ではやりたいことはなんとか実現できているので、
> 開発はこれで進めていきますね。(ちょと開発期間が短いもので)
> S2Robot側で改善がされたら(時期許せば)ぜひ取り込みたいと。
>
>
>
> 2013/8/18 Shinsuke Sugaya <shinsuke @ yahoo.co.jp>:
>> 菅谷です。
>>
>> フィードバックいただきありがとうございます。
>> 現状、300台のときにリダイレクト先を取得できれば
>> 取得して、処理せずに次のクロールに回してしまって
>> いるので、リダイレクトするときも処理できるように
>> カスタマイズ可能にすることを検討します。少々お待ち
>> ください。
>>
>> よろしくお願いいたします。
>>
>> shinsuke
>>
>>
>>
>> 2013年8月16日 17:27 kubo <dbflute @ gmail.com>:
>>> 久保(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 mailing list
>>> Seasar-user @ ml.seasar.org
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>> _______________________________________________
>> Seasar-user mailing list
>> Seasar-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-user
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user


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