自動化ツールを作っています。Kaiです。
「このサイトの情報を毎日集めたい」というご相談はよくいただきます。
できることも多いのですが、着手前に必ず確認していることが3つあります。
ここを飛ばすと、動くけれど止めざるを得ないものができてしまうので、
お受けする線引きも含めて、先に書いておきます。
取る前に確認する3つ
1. そのサイトの利用規約に、自動取得の記載があるか
多くのサイトは利用規約で自動取得の可否に触れています。
禁止と書かれていれば、そこで終わりです。技術的にできるかは関係ありません。
2. 公式の出口が用意されていないか
APIやCSVダウンロード、RSSが用意されているサイトは意外と多いです。
公式の出口があるなら、画面から取るより速くて壊れません。
3. どれくらいの頻度で取るか
1日1回と1分に1回では、相手のサーバーへの負荷がまったく違います。
必要な頻度は、たいていご想像より低いです。
公式の出口を、先に探す
探す順番は決まっています。
1. API — 提供されていれば一番速く、一番壊れません
2. CSV・Excelのダウンロード — 官公庁や統計サイトに多い
3. RSS — ニュース系なら残っていることがあります
4. 画面から読む — 上のどれも無いときの最後の手段
4番は、サイトの見た目が変わるたびに直す必要があります。
つまり作った後もコストがかかり続ける方法です。
1〜3が使えるなら、そちらを選びます。
「スクレイピングでお願いします」とご依頼いただいた場合でも、
公式の出口があればそちらをご提案します。そのほうが安く、長持ちするからです。
お受けできないもの
出品ページにも書いていますが、次のものはお受けしていません。
・利用規約に反する自動操作
・アクセス制限の回避(制限がかかっているものを、迂回して取る)
・複数アカウントの自動切り替え
技術的にできるかどうかではなく、
後で止められる可能性があるものは、最初から作らないという判断です。
作った時点では動いても、止まったときに直せません。
お金を払っていただいたものが使えなくなるのが、一番良くない結果なので。
頻度は、必要な分だけにする
ご相談では「常に最新にしたい」と言われることが多いのですが、
実際に伺っていくと、1日1回で足りることがほとんどです。
判断の基準はこうです。
・元のデータが1日1回しか更新されない → 1日1回で十分
・見るのが朝だけ → 朝1回でいい
・更新のたびに気づきたい → 頻度ではなく通知で解決する
頻度を上げても、元が更新されていなければ同じ値を取り直すだけです。
相手のサーバーに負荷をかけて、得るものがありません。
必要な頻度に落とすことは、相手への配慮であると同時に、
自分の仕組みを止まりにくくすることでもあります。
画面から取る場合に、必ず入れるもの
やむを得ず画面から読む形になった場合、次の2つを必ず入れます。
取れなかったときに、0件にしない
サイトの作りが変わると、エラーを出さずに「0件」として動き続けることがあります。
これが一番怖い壊れ方なので、
「取れなかった」と「本当に0件だった」を必ず区別して通知します。
間隔を空ける
まとめて一気に取りに行かず、1件ずつ間を空けます。
速く終わらせる必要がない処理なので、ゆっくり動かして問題ありません。
ご相談のときに教えていただきたいこと
1. 対象のサイトのURL — 規約と公式の出口をこちらで確認します
2. 取りたい項目 — 全部ではなく、実際に使う項目だけで結構です
3. どれくらいの頻度で必要か — 1日1回で足りるかを一緒に考えます
URLを教えていただければ、
「取れるか・公式の出口があるか・規約上の問題は無いか」を先に確認してお返事します。
規約上できない場合は、その旨をはっきりお伝えします。
おわりに
取れる・取れないの判断は、技術よりも先に規約と出口の話です。
「このサイト、いけますか」というご質問だけでも歓迎です。
確認してお返事します。