7

私は最近、ここでスクリーンスクレイピングとそれがどのようなタスクになるかについてかなり考えています。それで私は次の質問をします。

サイト開発者として、JSONの結果など、ユーザーが画面をスクレイピングするのを防ぐための単純なAPIを公開しますか?

これらの結果はキャッシュを実装する可能性があり、ダウンロードされる可能性のある大量のマークアップよりもトラフィックがはるかに少なくなります。

私は予防を考えていませんが、こすることを思いとどまらせています。


スクレイピング帯域幅サンプル
((users *(%/ 100))*((freq * 60)* 24))*ファイルサイズ

  • ユーザー:200,000
  • ユーティリティを使用しているユーザーの割合:5
  • ファイルサイズ:1kb
  • 周波数:1分

方式:

((users *(%/ 100))*((freq * 60)* 24))*ファイルサイズ

10,000 * 1440 * 1

14400000kbまたは13.73291015625gb

JSONの結果が200バイトであるとすると、現在は(10,000 * 1440 * 0.2)または1日あたり2.74658203125gbになります。

これは、1日あたり約11GBのトラフィックの変化です。


私のStackOverflowプロファイルは参考のために96kです。


この質問の理由により、ユーザープロファイルからJSONの結果を求めるようになりました:
http ://stackoverflow.uservoice.com/pages/general/suggestions/101342-add-json-for-user-information

他の開発者がこのタイプのAPIを公開するかどうか、そして帯域幅を減らすためにこれらのAPIを提供する価値があるかどうかを知りたいと思いました。

4

6 に答える 6

6

APIを提供することで、サイトに対して行われる画面スクレイピングの量を確実に減らすことができます。優れたRESTAPIを使用することは、画面スクレイピングよりもはるかに簡単で安全です。画面は予告なしに変更される可能性があるため、画面スクレイピングコードの保守がはるかに困難になります。開発者として、サイトからの情報が必要な場合、APIを介して同じ情報が利用可能であれば、サイトをスクレイプすることは決してありません。

于 2009-01-10T17:28:59.283 に答える
1

画面のスクレイピングは現実的に防ぐことはできません。APIを提供することは、データを消費する人にとっては良いことですが、それを防ぐことはできません。データは最終的に人間が読める形式である必要があるため、機械で読める形式になります。あなたはあなたのサイトであなたのエネルギーを費やし、あなたのデータを消費する人々のために働いていない方が良いでしょう(合法かどうかにかかわらず)。

wget、perl、正規表現は、データをスクレイピングするための一般的なメカニズムです。

于 2009-01-10T17:21:24.447 に答える
1

人々にあなたのサイトとの統合を奨励したい場合、またはこれが問題になるほど人気が​​ある場合(つまり、人々にサイトとの統合を許可することを余儀なくされる場合)、必ずAPIを提供してください。APIが適切で使いやすい場合、人々はスクリーンスクレイピングよりもAPIを好むでしょう。APIが不十分であるか、スクリーンスクレイパーよりも使いにくい場合でも、問題が発生する可能性があります。

于 2009-01-10T17:30:30.450 に答える
1

テクニカル ユーザーにとって、スクリーン スクレイピングよりも API を使用する方が簡単な場合は、そうするでしょう。さらに良いことに、スクリーン スクレイピングの代わりに API を使用するよう人々に勧めることができれば、自動化されたユーザー エージェントはブラウザーのユーザー エージェントとは明確に区別されるため、トラフィックの監視がはるかに簡単になるはずです。

RESTful JSON インターフェースは、他のどの言語からでもかなり簡単にスクリプト化できるため、適切な選択です ( JSON パーサーを持たない言語を示してください。誰も気にしない言語を示します)。

于 2009-01-10T17:37:19.720 に答える
0

人々がサイト上でソリューションを開発できるオープンモデルを提供したい場合は、はい、APIを提供する必要があります。スクリーンスクレイピングは敵対的な統合の方法であり、最後の手段でのみ使用する必要があります。

于 2009-01-10T17:20:44.900 に答える
0

ほとんどの開発者は、独自の理由で使用するテクノロジを選択します。したがって、彼らがあなたの画面をスクレイピングするために使用するものよりも簡単な API を提供すると、不明な割合がそれに移動します。帯域幅の削減は、考慮事項のリストではおそらく非常に低くなります。

何をスクレイピングするのかを指定していないため、提供する API の種類や、それを使用する比率を推測することはできません。

そらすのが難しいスクレイピングのための非常に一般的なツールの 1 つは、スクレイピングを簡単にする Excel またはその他の製品を使用することです。

あなたの意図が痛みを最小限に抑えることだけである場合(質問から推測される可能性があります)、はるかに役立つのは、スクレーパーにクエリを実行することです-とにかく、SOをクエリするよりも便利です。

woot.com をチェックして、RSS フィードで提供されているものを確認し、Web http サーバーの負担を軽減することができます。

于 2009-01-10T17:53:26.833 に答える