3

System.net.Webclient クラスを使用して Web ページからソース コードを取得するコードを既にまとめてあります。次に、そのソース コードに対して文字列検索を使用して、特定の情報を取得します。これ自体は問題なく動作しますが、私の問題は、ソース コードが数秒ごとに変更されることです。受信したデータをそれに応じて変更したいと考えています。このプロセスを繰り返すループを設定するだけでよいことは理解していますが、残念ながら現在のコードは完了するまでに 2.7 秒かかるため、この大きな遅延時間を避けたいと考えています。さらに、可能であれば、リクエストで Web ページをスパムすることは避けたいと考えています。複数のリクエストを送信する必要がないように、開いたままのストリームリードについて考えていましたが、これについてどうすればよいか完全にはわかりませんでした...

要約すると、System.Net 名前空間を使用して Web サイトから更新情報を取得する方法はありますか?

4

1 に答える 1

1

HTTPプロトコルがリアルタイムのデータ更新要件に適合していないのではないかと思います。定期的にHTTPリクエストを使用してポーリングする以外に、サーバー上でデータが変更されたかどうかを確認して、この新しいデータを取得することはできません。

たとえば、WebSocketテクノロジーはこれらのシナリオにより適しています。もちろん、クライアントがこのライブフィードをサブスクライブできるように、データプロバイダーはそれを実装する必要があります。

HTTPプロトコルを介してこの機能を実装する別の方法もあります。iframeを使用して長いポーリングを実装します。これがです。サーバーはチャンク転送エンコーディングを使用し、データの連続ストリームをソケットに送信するという考え方です。クライアントはこのストリームをサブスクライブし、サーバーで発生した変更を通知できます。繰り返しになりますが、これは、クライアントとして利用できるようにサーバー側で実装する必要があるテクノロジーです。

サーバーが提供するのがHTMLページ経由のデータだけである場合、IPアドレスがブラックリストに登録されてアクセスが拒否されるまで、このサーバーにHTTPリクエストを適用して、スクリーンスクレイピングを実行する運命にあります。

于 2012-06-15T18:45:40.250 に答える