|
|
发表于 2016-2-26 16:23:12
|
显示全部楼层
& C1 E" S) y" n7 y4 u+ {) G- x9 o
缺少一个gethtml,用下面这个:
/ D. t! p" B( M9 ?% {- public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
- l1 b2 ?# d7 B7 v. k. o5 H - {& M( }5 ]' Q' F; ]
- string strWebData = "error";
/ u" a1 z4 S* O( A/ v - try v& L, ]# b& K5 l& L1 \0 Q4 _
- {7 y: s9 t8 d- H0 Q7 m
- WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 5 m& i0 |* g% g- s
- // 需要注意的: 9 J7 W& w" u' o( E) p
- //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 & v5 \! u1 U# `! c$ _. O3 c0 D
- //这是就要具体问题具体分析比如在头部加入cookie
( y6 U! _3 I8 X( p) l5 Z, D( R - // webclient.Headers.Add("Cookie", cookie); ' |/ d$ U2 c5 a+ m- _# O
- //这样可能需要一些重载方法。根据需要写就可以了
7 [6 |/ B% D! W7 E - myWebClient.Headers.Add("User-agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)");
0 k) `" @7 A2 u+ q - //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");# [0 D& z1 y5 c& R1 `+ v
- //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 0 y" \, Z e; `3 `% W$ s h; }
- myWebClient.Credentials = CredentialCache.DefaultCredentials;
- V6 e }, c' h - //如果服务器要验证用户名,密码
/ U4 I) U4 N. H& v - //NetworkCredential mycred = new NetworkCredential(struser, strpassword); : D9 N! r$ W2 v, F9 C
- //myWebClient.Credentials = mycred; 5 W- k2 g/ _/ b# r1 t7 t
- //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) , r2 y9 v: E2 h% [7 k1 t1 }. m& M
- byte[] myDataBuffer = myWebClient.DownloadData(url);
: w/ u* W9 |9 P$ D/ } `. G - strWebData = Encoding.Default.GetString(myDataBuffer);; Y$ j Z6 M& d
- ( j: t: I. s* c! A; N5 S
- //获取网页字符编码描述信息
8 Y3 h/ L1 X b0 p) b - Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);8 }- Z% g9 s# v0 _/ C! h- ]+ B7 K. |
- string webCharSet = charSetMatch.Groups[2].Value;* q2 i1 w& |( K3 {) [, E5 f4 h
- if (charSet == null || charSet == "")
" w, x: d) `8 T! i6 |+ g, e$ l - charSet = webCharSet;
% R0 k; C5 `- K' j4 S: \, ` - if (charSet.Length > 0)
, v5 ^2 x' o6 C, x) |7 ~9 E - {
* e/ i/ v: u9 e - charSet = charSet.Replace(""", "");' V! u+ k! T; j0 G& d& n' F. H
- }
. E0 N8 Z, z x8 ^1 @4 m `9 W - if (UseUTF8CharSet)
" u f! J. r$ q1 p- W* V - {. B$ o8 p6 g7 H8 d5 d4 f
- if (charSet == null || charSet.Length == 0)8 b7 Z: m; l- G' u
- {3 @. P, v) k3 ]! N
- charSet = "utf-8";
' @! B, ` s# v& v5 Y# N$ k - }
+ { d3 b- e7 Z/ g- o) \ - }
6 r8 `' U* I- a2 a7 }# r - if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)5 }- O) U0 M) ]6 R
- strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
) V m0 i' T3 n9 f: p6 `2 ]2 v - + }; d) U. X, j# K* N9 U q- [
- }
; s9 c9 K" d% P - catch (Exception)" l6 k, g7 b* q$ R8 N* Q" C
- {
% }3 ~1 B8 N' o6 w0 f3 L - strWebData = "error";* i1 e1 R! C2 H
- }# e, @% e% I+ r4 {6 G6 Q8 b
u. ~6 s _4 Z2 l* V- }0 m+ e- return strWebData;
6 T2 o, v+ `2 P# @ - }
复制代码
+ T. |% \2 O! F n- i+ @! H- k+ I$ ?5 ^. b: @$ K" V6 `2 S4 z
|
|