サイトからデータを取る自動化で、先に確認していること

サイトからデータを取る自動化で、先に確認していること

記事
IT・テクノロジー
自動化ツールを作っています。Kaiです。

「このサイトの情報を毎日集めたい」というご相談はよくいただきます。
できることも多いのですが、着手前に必ず確認していることが3つあります。

ここを飛ばすと、動くけれど止めざるを得ないものができてしまうので、
お受けする線引きも含めて、先に書いておきます。


取る前に確認する3つ


14_fig1_check.png

1. そのサイトの利用規約に、自動取得の記載があるか

多くのサイトは利用規約で自動取得の可否に触れています。
禁止と書かれていれば、そこで終わりです。技術的にできるかは関係ありません。

2. 公式の出口が用意されていないか

APIやCSVダウンロード、RSSが用意されているサイトは意外と多いです。
公式の出口があるなら、画面から取るより速くて壊れません。

3. どれくらいの頻度で取るか

1日1回と1分に1回では、相手のサーバーへの負荷がまったく違います。
必要な頻度は、たいていご想像より低いです。


公式の出口を、先に探す


14_fig2_priority.png

探す順番は決まっています。

1. API — 提供されていれば一番速く、一番壊れません
2. CSV・Excelのダウンロード — 官公庁や統計サイトに多い
3. RSS — ニュース系なら残っていることがあります
4. 画面から読む — 上のどれも無いときの最後の手段

4番は、サイトの見た目が変わるたびに直す必要があります。
つまり作った後もコストがかかり続ける方法です。

1〜3が使えるなら、そちらを選びます。
「スクレイピングでお願いします」とご依頼いただいた場合でも、
公式の出口があればそちらをご提案します。そのほうが安く、長持ちするからです。


お受けできないもの


14_fig3_no.png

出品ページにも書いていますが、次のものはお受けしていません。

・利用規約に反する自動操作
・アクセス制限の回避(制限がかかっているものを、迂回して取る)
・複数アカウントの自動切り替え

技術的にできるかどうかではなく、
後で止められる可能性があるものは、最初から作らないという判断です。

作った時点では動いても、止まったときに直せません。
お金を払っていただいたものが使えなくなるのが、一番良くない結果なので。


頻度は、必要な分だけにする


14_fig4_freq.png

ご相談では「常に最新にしたい」と言われることが多いのですが、
実際に伺っていくと、1日1回で足りることがほとんどです。

判断の基準はこうです。

・元のデータが1日1回しか更新されない → 1日1回で十分
・見るのが朝だけ → 朝1回でいい
・更新のたびに気づきたい → 頻度ではなく通知で解決する

頻度を上げても、元が更新されていなければ同じ値を取り直すだけです。
相手のサーバーに負荷をかけて、得るものがありません。

必要な頻度に落とすことは、相手への配慮であると同時に、
自分の仕組みを止まりにくくすることでもあります。


画面から取る場合に、必ず入れるもの


やむを得ず画面から読む形になった場合、次の2つを必ず入れます。

取れなかったときに、0件にしない

サイトの作りが変わると、エラーを出さずに「0件」として動き続けることがあります。
これが一番怖い壊れ方なので、
「取れなかった」と「本当に0件だった」を必ず区別して通知します。

間隔を空ける

まとめて一気に取りに行かず、1件ずつ間を空けます。
速く終わらせる必要がない処理なので、ゆっくり動かして問題ありません。


ご相談のときに教えていただきたいこと


14_fig5_ask.png

1. 対象のサイトのURL — 規約と公式の出口をこちらで確認します
2. 取りたい項目 — 全部ではなく、実際に使う項目だけで結構です
3. どれくらいの頻度で必要か — 1日1回で足りるかを一緒に考えます

URLを教えていただければ、
「取れるか・公式の出口があるか・規約上の問題は無いか」を先に確認してお返事します。
規約上できない場合は、その旨をはっきりお伝えします。


おわりに


取れる・取れないの判断は、技術よりも先に規約と出口の話です。

「このサイト、いけますか」というご質問だけでも歓迎です。
確認してお返事します。



サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す