2009-04-25 14 views
2

指定されたURLにあるHTMLフォームを自動的に完成させるC#プログラム(純粋に教育的目的)を作成します。それは可能かどうか、私はどのように始めることができますか?私は、HTMLをダウンロードし、フォームの要素の名前を解析し、必要なパラメータでそのURLをGETすることを考えました。それは良いアイデアですか?C#プログラムを使用してHTMLフォームを自動完成

答えて

3

System.Net.WebRequestを参照してください。これを使用して、変数がURLにエンコードされているGET要求や、変数が要求の本文に入るPOST要求を発行できます。フォームのHTMLソースコードは、発行するリクエストの種類を示します。

フォームの構造が変更されない場合は、実行時にフォーム自体をダウンロードまたは解析する必要はありません.GETまたはPOSTを構築する時点でプログラム内の変数名をハードコードすることができます要求。

2

一般的な考え方は正しいですが、通常はHTMLフォームはGETではなくサーバーにPOSTを実行します。引数を提供するC#のWebリクエストのコード例については、this questionを参照してください。 request.Method = "POST"を追加するようにコメントに注意してください。それはGETからのリクエストを変更するからです。

:(。

<form id="form" action="..." method="post"> 

POSTフォームではありません宣言したメソッドはGETであることを意味するフォームは、それがタグを開いていた方法を見て、GETまたはPOSTである。これは、伝えることができます。)より複雑な問題は、要素を見つけるためにHTMLを解析することです。 HTML標準の緩みは、単純にXML文書として扱い、そのように解析することができず、より寛容な方法を考え出す必要があることを意味するため、これは難しい問題です。このサイト(this for example)でこれを行う方法についてはいくつかの質問がありますが、それは一般的な問題ですので、Googleは間違いなくあなたにいくつかのリードを与えるでしょう。

私がこの問題に賛同していたのであれば、まずWebフォームを既知のフォームで処理して(解析をスキップすることができます)、サーバーからのデータの送信と取得に慣れていればその部分について心配してください。

+0

はい、私はそれが最初に知られているフォーム上の最初の作業を取得したい、正しいです。 – hyperboreean

1

Dave Wardは、AJAXを使用してページメソッドにポストバックすることを中心とする素晴らしい投稿を書いています。この考え方は、応答オブジェクトをJSONにシリアル化し、jQueryを使用してクライアントに表示することです。この記事はあなたの状況に適用できる素晴らしい例でよく書かれています。

投稿を読むと、アイデアが自分の戦略に沿っていることがわかります。 Daveのサイトには、Asp.net、AJAX、jQueryとJavascriptを使ったクライアントテクニックを融合させた多くのクールな記事があります。

0

フォーム提出を伴う画面/ウェブスクレーパーのようなサウンドです。私の答えをthis questionにチェックしたいかもしれません。

2

WatiNがこれを行います。テスト目的でIEを自動化します。しかし、私はスクラップ物をスクリーニングするためにそれを使用しました。それはうまくいく。

http://watin.sourceforge.net/

[Test] 
public void SearchForWatiNOnGoogle() 
{ 
using (IE ie = new IE("http://www.google.com")) 
{ 
    ie.TextField(Find.ByName("q")).TypeText("WatiN"); 
    ie.Button(Find.ByName("btnG")).Click(); 

    Assert.IsTrue(ie.ContainsText("WatiN")); 
} 
} 
関連する問題