Webクローリングを行うにあたって、HTMLからURLの取得&処理で苦労した点について記載します。
Webクローリングを行う際に、同一URLには再アクセスをしないようにする必要があります。それは、サーバー側に無駄に負担をかけてしまうということ・Webクローリングに時間がかかってしまうためです。ですので、以前にアクセスしたURLを覚えておき、同一URLであるかどうかを判断するしくみを組み込みます。
同一URLの判断で以下の2点で課題が出てきます。
①相対リンクになっている
(例1)”../../about”、(例2)”./about”
②リダイレクトされている
(例)https://XXXX/about/company/ → https://XXXX/company/
①については、例1も例2も同じサイトhttps://XXXX/about となったりすます。
つまり、この2つは異なるURLとして判断してはいけません。
→結論としては、正しいURLを生成した後に判定を行う必要があります。
②については、例にあるとおり、リダイレクトたURLはアクセスしないとわかりません。最低でも1度アクセスした後に同一判定を行う必要がある。このリダイレクトは、後続のPATHに依存しないで同一のサイトにリダイレクトしているものがあるため、無限に検索を行ってしまう可能性があります(※ネストというか、取得の階層に制限を入れる仕組みは必ず必要なので、無限ループにならないように設計してください)
→結論としては、一度アクセスし、リダイレクト先のURLを正当なURLとして判定するという仕組みになります。
(記事のお問合せ・無料相談 → こちら)