C# 在采集数据时的验证与登录处理

首先打开网站,查看源文件,找到他的登录表单部分。
yo5e.Tw4C8RxW}0ITPUB个人空间XiBY9N/v1nz
比如:ITPUB个人空间Hb6u;L_
<form. name="login" action="loginMain.jsp" method="POST" target="_top">ITPUB个人空间9{T#vD/S`9Iy
      <table width="218" border="0" cellspacing="0" cellpadding="0">ITPUB个人空间!?(pn%Z4Mm#srf4h
        <tr>ITPUB个人空间.Ma,CI(rwN0y:T G }
          <td width="50" height="28" class="hui"><div align="right">用户名:</div></td>
w)yj*n;Z~Kw0          <td width="168" height="28"><input class="hui" id="username"ITPUB个人空间$X/Iy9k"w g-J7F'E
            maxlength="40" size="23" name="username" id="username" /></td>
cp5w|:|v5o0        </tr>ITPUB个人空间7cwN zZc/6F2@
        <tr>
$b%P!oc/R!f:f0          <td height="28" class="hui"><div align="right">密 码:</div></td>ITPUB个人空间3yQ/uFF5~{]
          <td height="28"><input class="hui" id="passwd"ITPUB个人空间-G1ey/FC[
            maxlength="40" size="23" name="passwd" type="password" id="passwd" /></td>ITPUB个人空间wh(@7RGi*`
        </tr>ITPUB个人空间$[ b(Q8Uq,S's.x)P
      </table>ITPUB个人空间'N9e"sd#I^? sR
</form>ITPUB个人空间 {#Z{H4i:QB
从以上表单可以看出,表单提交的方法是:POST,提交至loginMain.jsp处理,共有两个表单项即:username、passwdITPUB个人空间0S{f$y+Q9q].I4@R%v
ITPUB个人空间8E{N7B8`6M*OW6Nb
下面是C#模仿登录程序:Login.cs
F(h&HJ C2D)a0
^"u+m!I|g7~0

using System;
9XG(i^U$b!o.z@0
using System.Data;ITPUB个人空间8L Q%xc0f M*M
using System.Net;ITPUB个人空间IUqW t'oV
using System.Text;ITPUB个人空间P+rd`*mw0s
using System.IO;ITPUB个人空间U2c2g~(o({#O
using System.Text.RegularExpressions;ITPUB个人空间 Q,V |7q5Z"T

*j9N(~+fQ3Q*N8S.v0
/// <summary>
@0nX1~3TY(q0
/// 登录网站并获取CookiesITPUB个人空间e nC*c~#?F,]&b p
/// </summary> ITPUB个人空间C}j.L;c1Tm'}j
/// <returns> 成功登录的Cookie信息 </returns>
6fM'Z7l2Q-G8d0x0 public static CookieContainer Get_Login()ITPUB个人空间c|K)~1`
{
N8eOYz6Z3f}0             CookieContainer cc
= new CookieContainer();
1/j6x+x+XW*[0            
string FormURL = " http://blog.hnce.net/loginMain.jsp " ;                 // 处理表单的绝对URL地址 ITPUB个人空间@gf"V0KZ,IIv
             string FormData = " username=slick&passwd=hedy12345 " ;     // 表单需要提交的参数,注意改为你已注册的信息。
p|7m_2b9[0
             ASCIIEncoding encoding = new ASCIIEncoding();
A9Bj7M:s|+`4~a0            
byte [] data = encoding.GetBytes(FormData);ITPUB个人空间'LE0o@_

,suL ]h:e!`D%T0             HttpWebRequest request
= (HttpWebRequest)WebRequest.Create(FormURL);
q z-X9n2yx2w;BY0             request.Method
= " POST " ;     // 数据提交方式
*Y6pN lw#vI$?1?0
             request.ContentType = " application/x-www-form-urlencoded " ;ITPUB个人空间4f*L$dI g
             request.ContentLength
= data.Length;
'u OB&g4@nt0             request.UserAgent
= " Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) " ;
+M,E7F pC0            
// 模拟一个UserAgent ITPUB个人空间 X)| zU/S
             Stream newStream = request.GetRequestStream();
b.^X'[s0             newStream.Write(data,
0 , data.Length);ITPUB个人空间4n*V4y+B!G [&w/L
ITPUB个人空间S-Z{{g8f }t z
             newStream.Close();
(u2hXM3wPt0                   
)ZY [7[M.D0             request.CookieContainer
= cc;
]F { Oi4e S_gJ0                   ITPUB个人空间h d/fKm8r(| g
             HttpWebResponse response
= (HttpWebResponse)request.GetResponse();ITPUB个人空间GGX#t|Z5X7D;jE
             cc.Add(response.Cookies);ITPUB个人空间3ZI U!gp|
             Stream stream
= response.GetResponseStream();
F An6_q@p/~+u0            
string WebContent = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();
$@.ci;?f@F2dC0            
return cc;
}E7i;oA6t;Y4~0}


x:/5a1[)w$L!e[ d0ITPUB个人空间(`?#O!L*uU&e
调用以上的方法来获取需要登录才能查看的内容。

             CookieContainer cc = new CookieContainer();
QJ9ry6IG/e E4f0             cc
= Login.Get_Login();             // 获取登录Cookies
2JzRj'Z/{ sJ0
ITPUB个人空间[1Pb:e B!l#I-l;hbcl
            
string PhotoClassURL = " http://blog.hnce.net/xxx.jsp " ;
gd M[[g0             HttpWebRequest Myrequest
= (HttpWebRequest)WebRequest.Create(PhotoClassURL);
9|"m c/A^ G"B0             Myrequest.CookieContainer
= cc;ITPUB个人空间%S|5I^&tj5{V"/
             HttpWebResponse Myresponse
= (HttpWebResponse)Myrequest.GetResponse();ITPUB个人空间3l+pE Khr+L
             cc.Add(Myresponse.Cookies);ITPUB个人空间T7@/Y!r ?E
             Stream Mystream
= Myresponse.GetResponseStream();
z2rj(F f;v0            
string sHtml = new StreamReader(Mystream, System.Text.Encoding.Default).ReadToEnd();

ITPUB个人空间1M5x$`5^:?G0j
ITPUB个人空间3P`7_/M`8g$p(?Qt
sHtml即为你登录之后看到的内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值