web-dev-qa-db-ja.com

.NetでのWebスクレイピングのパターンと実践(C#)

外部のWebサイト/アプリケーションを自動化するアプリケーションを作成します。場合によっては、ユーザーのようにサイトをナビゲートする必要があります(たどる必要のあるリンクの一部は予測できず、応答から解析する必要があります)

私はすでに Html Agility Pack を使用しており、必要な場合は Tidy を認識しています。

他に知っておくべき技術はありますか?

外部Webアプリが変更された場合に迅速に調整できるようにするための推奨パターンはありますか?応答の検証を一部としてカプセル化することを想定しています必要に応じて簡単に分離/接続できる戦略または類似のパターンのタイプですが、具体的な提案があればすばらしいでしょう。

9
jlnorsworthy

ユーザーが行うように外部Webサイトのナビゲーションを自動化する場合は、Watinが最適です。オブジェクトモデルを介してWebブラウザーを駆動し、DOMに基づいて構築された幅広い解析機能(およびスクリプトを含め、ブラウザーにある非DOM機能)を備えています。

ここにリンクがあります:

Watin.org

4
dreadwail

すばやい変更を加えて、外部Webアプリの変更を追跡する機能を探している場合は、スクリプトを調べます。 C#が選択した言語である場合は、その場でコードをコンパイルする方法を見てください。データベースを使用している場合は、スクリプトコードをそこに格納できます。それ以外の場合は、プレーンテキストファイルも機能します。

GoFパターンに関しては、 Strategy が教科書の選択です。

考慮すべき他の「パターン」は、特に次のアクションを選択するためにそれらを使用して応答を検証することについて述べたので、 有限状態マシン です。たとえば、Webメールクライアントの状態は、「ログインしていない」、「受信トレイ」、「メッセージの読み取り」、「返信の編集」などになります。状態に応じてアクションを実行します。応答、次の状態を選択します。

0
Crispy

パターンは本当に問題に由来するはずですが、ここにいくつかの選択肢があります:

主に進行中の開発コスト/煩わしさを懸念している場合:戦略パターン(すでに言及)-これを使用してコンポーネントレベルのインターフェースを実装し、動的バインディング手法を使用して特定の戦略(実装)を解決します。 IOCコンテナー(最近のAutofacが好き))はうまく機能します。

上記をサポートする必要がある場合は、さらにスケールする必要があります。

0
sbrenton