利用WebClient实现自动添写、提交表单

1。要提交的表单是:http://stock.business.sohu.com/q/hp.php
表单要填写的内容保括:股票代码,时间范围
2。网页的源代码分析
这是我们要填写表单的内容:
 <form name=form_table method=post action=/q/hp.php OnSubmit="return checkvalue()">
 <td align=left valign=middle width=150 bgcolor=white>
  股票代码&nbsp;<INPUT size=6name=code value=600018>
  <input type=submit value='提交' id=submit name=submit>
  </td><td bgcolor=white valign=middle align=center width=250>
  开始日期&nbsp;<INPUT NAME=start_year VALUE=2004 SIZE=4 MAXLENGTH=4>&nbsp;年
  <SELECT NAME=start_month>
 <OPTION value=01>一月
<OPTION value=02>二月
<OPTION value=03>三月
<OPTION value=04>四月
<OPTION value=05>五月
<OPTION value=06 selected>六月
<OPTION value=07>七月
<OPTION value=08>八月
<OPTION value=09>九月
<OPTION value=10>十月
<OPTION value=11>十一月
<OPTION value=12>十二月
      </SELECT>&nbsp;月
  <INPUT NAME=start_day VALUE=28 SIZE=2 MAXLENGTH=2>&nbsp;日<br>
  结束日期&nbsp;<INPUT NAME=end_year VALUE=2005 SIZE=4 MAXLENGTH=4>&nbsp;年
  <SELECT NAME=end_month>
 <OPTION value=01>一月
<OPTION value=02>二月
<OPTION value=03>三月
<OPTION value=04>四月
<OPTION value=05>五月
<OPTION value=06>六月
<OPTION value=07 selected>七月
<OPTION value=08>八月
<OPTION value=09>九月
<OPTION value=10>十月
<OPTION value=11>十一月
<OPTION value=12>十二月
      </SELECT>&nbsp;月
  <INPUT NAME=end_day VALUE=28 SIZE=2 MAXLENGTH=2>&nbsp;日</td><td bgcolor=white valign=middle align=center>
 <input type=radio name=ss value=d  checked >交易日<br>
 <input type=radio name=ss value=w  >交易周<br>
 <input type=radio name=ss value=m  >交易月
 </td><td bgcolor=white valign=middle align=center>注: 所选记录请<br>不要超出300条。</td></tr>
  </FORM>

第一行告诉我们这个表单的action地址和发送方式,我们还可以得到股票代码,和日期的变量名称。下面我们就可以利用WebClient的UploadDate发送表单了。
public byte[] UploadData(
   string address,
   string method,
   byte[] data
);
代码如下:

 

None.gif              string  uriString  =   " http://stock.business.sohu.com/q/hp.php " ;
None.gif            
//  创建一个新的 WebClient 实例.
None.gif
            WebClient myWebClient  =   new  WebClient();
None.gif            
string  postData  =   " code= " ;
None.gif            postData
+= textBox1.Text;
None.gif            postData
+= " &start_year= " ;
None.gif            postData
+= dateTimePicker1.Value.Year.ToString();
None.gif            postData
+= " &start_month= " ;
None.gif            
if (dateTimePicker1.Value.Month < 10 )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                
string str1="0"+dateTimePicker1.Value.Month.ToString();
InBlock.gif                postData
+="0"+dateTimePicker1.Value.Month.ToString();
ExpandedBlockEnd.gif            }

None.gif            
else
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                postData
+=dateTimePicker1.Value.Month.ToString();
ExpandedBlockEnd.gif            }

None.gif            postData
+= " &end_year= " ;
None.gif            postData
+= dateTimePicker2.Value.Year.ToString();
None.gif            postData
+= " &end_month= " ;
None.gif            
if (dateTimePicker2.Value.Month < 10 )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                postData
+="0"+dateTimePicker2.Value.Month.ToString();
InBlock.gif
ExpandedBlockEnd.gif            }

None.gif            
else
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                postData
+=dateTimePicker2.Value.Month.ToString();
ExpandedBlockEnd.gif            }

None.gif            postData
+= " &start_day= " ;
None.gif            
if (dateTimePicker1.Value.Day < 10 )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                postData
+="0"+dateTimePicker1.Value.Day.ToString();
ExpandedBlockEnd.gif            }

None.gif            
else
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                postData
+=dateTimePicker1.Value.Day.ToString();
ExpandedBlockEnd.gif            }

None.gif            postData
+= " &end_day= " ;
None.gif            
if (dateTimePicker2.Value.Day < 10 )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                postData
+="0"+dateTimePicker2.Value.Day.ToString();
InBlock.gif
ExpandedBlockEnd.gif            }

None.gif            
else
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                postData
+=dateTimePicker2.Value.Day.ToString();
ExpandedBlockEnd.gif            }

None.gif            
//     02&end_year=2004&end_month=12&start_day=01&end_day=28";
None.gif            
//  注意这种拼字符串的ContentType
None.gif
            myWebClient.Headers.Add( " Content-Type " , " application/x-www-form-urlencoded " );
None.gif            
//  转化成二进制数组
None.gif
             byte [] byteArray  =  Encoding.ASCII.GetBytes(postData);
None.gif            
//  上传数据,并获取返回的二进制数据.
None.gif
             byte [] responseArray  =  myWebClient.UploadData(uriString, " POST " ,byteArray);
None.gif            srcCode
= Encoding.ASCII.GetString(responseArray);
None.gif            
int  pos = 0 ;
None.gif            
if ((pos = srcCode.IndexOf( " <br><br><br><center> " )) !=- 1 )
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif {
InBlock.gif                MessageBox.Show(
"您输入的股票代码不存在");
InBlock.gif                
return;
InBlock.gif
ExpandedBlockEnd.gif            }

None.gif            AnsCode(srcCode);
srcCode是获得提交后的网页源代码,AnsCode是处理这些代码,以提取股票的各种数据放入数据库

转载于:https://www.cnblogs.com/ausoldier/archive/2005/08/10/211219.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值