「先月まで毎週ちゃんと動いていたのに、急にデータが来なくなった」
Webからデータを自動で集める仕組み(スクレイピング)には、この「ある日突然止まる」がつきものです。作った人の腕が悪かったとは限りません。むしろ、どんなに丁寧に作っても止まるときは止まります。
なぜ止まるのか。原因はほぼ、次の3つのどれかです。
■ 原因1. 相手のサイトが模様替えをした
一番多いのはこれです。
スクレイピングは「このページのこの場所に価格が書いてある」という前提で動いています。相手のサイトがリニューアルやデザイン変更をすると、その前提が崩れて止まります。
これは直せます。新しいページの構造に合わせて、読み取る場所を直すだけです。
ただし、直りやすさは作り方で大きく変わります。ページの見た目の細部(CSSのクラス名など)に頼った作りだと、小さな変更でも壊れます。「表の中に品名と価格が並んでいる」という構造で読む作りにしておくと、デザインが変わっても生き残ることが多くなります。
■ 原因2. 相手のサイトがbot対策を入れた
アクセスが自動プログラムかどうかを判定して弾く仕組み(CloudflareやCAPTCHAなど)を、相手のサイトが後から導入することがあります。
この場合、私は修正をお断りしています。
理由は2つです。まず、bot対策の回避は相手サイトの利用規約に反することがほとんどです。そして、仮に回避できても、対策が強化されるたびにまた止まります。いたちごっこにお金を払い続けることになります。
このケースでは「公式APIがないか探す」「手作業に切り替える」「その項目は諦める」のどれかを一緒に考えるほうが、結局安くつきます。
■ 原因3. 相手のサイトが規約を変えた
作った時点では自動収集を禁止していなかったサイトが、あとから規約を変更することがあります。
怖いのは、止まらずに動き続けてしまう場合です。仕組みは元気に動いているのに、実は規約違反の状態になっている。発注者が気づかないまま、というのが一番よくないパターンです。
だから収集の前だけでなく、保守のタイミングでも規約とrobots.txt(サイトが自動アクセスへの方針を書いておく場所)は見直す必要があります。
■ 発注前に聞いておくと損しない3つの質問
これから外注する方は、契約前にこう聞いてみてください。
1.「止まったとき、止まったと分かる仕組みはありますか?」
→ 止まったことに1ヶ月気づかないと、その間のデータは戻りません。
2.「対象サイトの規約とrobots.txtは確認しますか?」
→ ここを確認しない業者に頼むと、違反リスクを発注者が背負うことになります。
3.「納品後、直せる資料は残りますか?」
→ 作った本人と連絡がつかなくなる事態は普通に起きます。修正手順書があるかどうかで、その後の選択肢がまるで違います。
■ 最後に
私はこの3つ(停止の検知・事前の規約確認・修正手順書)を全部つけたデータ収集の仕組みづくりを出品しています。気になる方はプロフィールからご覧ください。
取れないものは取れないとお伝えする方針です。まずは対象のサイトを教えていただければ、可否からお答えします。