C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 題名: C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 著者: mark225
- 日時: 2012/09/08 22:51:04
- ID: 30907
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 著者: Azulean
- 日時: 2012/09/08 23:34:43
- ID: 30908
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 著者: mark225
- 日時: 2012/09/09 12:03:56
- ID: 30909
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 著者: Azulean
- 日時: 2012/09/09 12:39:50
- ID: 30910
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 著者: mark225
- 日時: 2012/09/09 15:27:40
- ID: 30911
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 著者: Azulean
- 日時: 2012/09/09 16:28:54
- ID: 30912
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: C#でWebRequestを使ってウエブページ内のコンボボックス(select)を選択→HTMLを取得したい
- 著者: mark225
- 日時: 2012/09/09 18:17:59
- ID: 30914
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
下記はHTMLのコンボボックス部分です。WebRequestで1選択〜3選択を選択して各HTMLを取得したいのですが
その方法をご教示頂けないでしょうか。
<select name="target" tabindex="2" onchange="refresh()" style="font-size: 0.85em;">
<option value="1" selected="selected">1選択</option>
<option value="2">2選択</option>
<option value="3">3選択</option></select>
下記のプログラムで試したのですが常にデフォルトの1選択のHTMLしか取得できません。
ネットに公開されているプログラムを真似て作ったものなので処理内容が理解できておらず、何が悪いのか分かりません。
string Html;
TransmitData("Https...", "target&value&2"); //選択をシミュレート(のつもり)
TransmitData("Https...", "onchange=refresh()"); //選択確定をシミュレート(のつもり)
↑ これを実行した後もHtmlには1選択の内容が入っている
private void TransmitData(string s_url, string s_param)
{
httpWebRequest = (HttpWebRequest)WebRequest.Create(s_url);
httpWebRequest.CookieContainer = cookieContainer; //取得済みのクッキーコンテナ
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
byte[] data = Encoding.ASCII.GetBytes(s_param);
httpWebRequest.ContentLength = data.Length;
httpWebRequest.Method = "Post";
Stream reqStream = httpWebRequest.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
WebResponse webResponse = httpWebRequest.GetResponse();
Stream resStream = webResponse.GetResponseStream();
Encoding encoder = Encoding.GetEncoding("Shift_JIS");
StreamReader streamReader = new StreamReader(resStream, encoder);
Html = streamReader.ReadToEnd();
streamReader.Close();
resStream.Close();
}
因みに下記はWebBrowserクラスを使ったプログラムで、こちらは選択したHTMLを取得できていますが、Enterキーの押下をシミュレートしないとデフォルトの1選択となってしまいます。 もっとスマートな方法は無いのでしょうか。
webBrowser1.Document.All.GetElementsByName("target")[0].SetAttribute("value", "2"); //コンボボックス選択
MouseKeyLib.KeyOnSimulate((char)MouseKeyLib.VirtualKeyCodes.VK_ENTER); //Enterキーをシミュレート
【第一希望】WebRequestを使い、バックグランドでHTMLの処理をしたい
【第二希望】WebRequestでの実現が不可能であればWebBrowserでEnterキーをシミュレートすることなく処理したい