2011-12-08 15 views
0

私は常に動的データを更新しているWebページをポーリングし、そのデータを取得したいと思います。私は1秒ごとにページ全体をリロードしたくありません。ページをリロードせずにそのデータを取得する方法はありますか?C#.NETでは、ajax Webページから動的データをスクラップする方法はありますか?

私はデモ用のコンソールアプリケーションとしてコーディングしています。

多くの感謝!しかし、それはこの日付を設定するには、サーバーまで完全だ...

HttpWebResponse.LastModified 

- それは、あるいは正確でない場合があります:あなたはヘッダデータを使用することができ

+0

実際のブラウザの動作をエミュレートしようとしましたか?つまり、AJAX呼び出しを行い、結果を解析しましたか? –

+3

「動的データ」を定義します。ページは頻繁にサーバー上で更新される静的コンテンツを返しますか、またはそのページにJavaScript/AJAXが多数あり、そのデータを即座に更新しますか? – David

+0

ありがとうございます。株式のようなものです。私はアップデートをトリガーしていません - ちょうど定期的に起こります。私はPhantomJS(ヘッドなしWebKitブラウザ)を使用していましたが、C#ソリューションを好むでしょう。 –

答えて

0

まず、HTTPはステートレスです。 HTTPリクエストを実行すると、動的ルーチンを使用して生成された場合でも、常に静的データが返されます。

他の方法でページを構成するためのデータ(DB、Webサービスなどへの直接リンク)をヒットできないように聞こえません。もしあなたがウェブページを掻き集めることができないのであれば。

あなたがそれを行うことができたとしても、大きな違いはありません。リモートサービスが持つデータと今持っているものを比較する必要があります。何らかのプッシュ通知がない場合はポーリングしています。ポーリングしている場合は、すべての時間をチェックする必要があります。

+0

ありがとうPaul-私は上の人たちに、PhantomJS(ヘッドレスWebキットブラウザ)を使って、これを混在させていると言っていました。私は熟練したJavascriptの開発者ではなく、C#でそれを行うことを好むだろう。私は、ブラウザプラグインがより良いアプローチかもしれないと思っています。 –

0

は、最終更新日を確認するために戻りました。

マニュアルスクレイピングを防止するもう1つのオプションは、返されたデータに対してチェックサムを取得することです。それを保存し、マークアップの合計を保存したものと比較することができます。

+0

ありがとうGeorge - 私は分かりませんが、毎秒ページをリロードしなければならないようですね。私はウィリアムのHTMLアプリケーション(HTA)のアイデアが働かない限り、ブラウザプラグインを書くのが良い方法かもしれないと思っています。 –

0

HTMLアプリケーション(HTA)を作成することを検討することがあります。
これにより、フルブラウザー機能と、イベントにフックし、別のウィンドウにデータを表示したり、ディスクファイルに書き込んだりすることができます。

+0

ありがとうウィリアム!あなたはそれのためのリンクを持っています - 私はそれを聞いたことがない。有望な音。乾杯! –

関連する問題