|
|
发表于 2016-2-26 16:17:11
|
显示全部楼层
- #region 抓取全站链接
/ u; m/ C4 E7 u% J- V7 @! c' I$ z, W - public static List<string> GetAllHref(string url)
4 z% g6 `( L, S1 X& V: s$ s - {' C" \1 t0 W F, ?/ O
- List<string> allHref = new List<string>();6 ^5 k) ?6 Q$ r4 r `$ _ I1 J+ P
- try+ E3 s! Q# k2 y0 }/ \* u
- {
$ T% Z+ ]0 B, h/ S; [7 F+ U - string strhtml = soso.getHtml(url, "", true);
; l5 H4 k3 w) c# _ - if (strhtml != "error"), A3 `6 H, D% a# N8 \
- { c) g: `/ A$ [- r- P$ e" f# y
- Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");* }9 |- e1 M; X) o% t+ v
- MatchCollection mc = reg.Matches(strhtml);7 S- t1 U8 P# Y4 Y7 |/ ^( _
- foreach (Match m in mc)
" ]& ]3 j( j" X* z - {' m4 M0 ^) c9 w
- Uri uri = new Uri(url);+ E; @5 z- z) a0 R
- Uri thisUri = new Uri(uri, m.Groups["url"].Value);! K, C; y- f, t0 e( ~+ v
- string fullUrl = "";: U7 w1 O5 S4 b0 C/ J( u; z
- if (m.Groups["url"].Value.StartsWith("http"))
+ z( f5 Y1 Q9 }9 A( y6 {+ | - { o) L: i) Y- d8 w1 _
- fullUrl = m.Groups["url"].Value;$ q5 y1 f6 R' f! v% Z
- }1 E u* N. ]/ r& P
- else
: ]6 {. x+ g& O! \9 ` - {
* |2 Z0 ?9 j& B$ M - fullUrl = thisUri.ToString();7 u; m( O. d: T, K. r9 X) S
- } Y7 I3 A, Q: h
- allHref.Add(fullUrl);
/ u' ]! Q) X& U - //Console.WriteLine("原链接:" + m.Groups["url"].Value);/ Q) P: [# s$ V; H! S
- //Console.WriteLine("文本标记:" + m.Groups["text"].Value);; ]1 J+ E/ A* J" \
- //Console.WriteLine("补全链接:" + fullUrl);
3 Q% N4 v T- Y( {$ ^ - //Console.WriteLine("…………………………………………");
/ W( N# H, z$ r% U# x' H - }
x' O4 D7 d# \ - }
3 H- v; M. Q0 `2 ^: B0 ^ - }7 t8 A+ ?4 U. v3 T* y; [
- catch (Exception ex)$ L4 q a$ V _7 Y3 s
- { }
. z5 n% j" A9 y - return allHref;
/ W* w# D8 X4 Z) k+ n- B# |5 t% ~ - }8 v) n/ W w. O N. n: ], K
- #endregion
复制代码 ' E9 `$ a+ e% r; e, d4 [% U5 e
6 E* D/ `9 k# |. n' G' K8 s) F, L
4 H5 B9 q. z% U- / c; _: Y7 s) C* e
- + C( ?5 T+ g3 Q1 h; r( `5 d
- #region 数据去重# ^ o- l G5 a
- /// <summary>- e& U/ s/ Q5 ~7 {( n
- /// List<string>去重: g, g, t1 Y! i8 t( ?8 t
- /// </summary>& Y1 g( m/ Q8 z% o& ]; i$ F
- /// <param name="list"></param>8 B* M1 V: C N; v5 I
- /// <returns></returns>2 G3 ?) T0 a2 u8 `
- public static List<string> getUnqueList(List<string> list)" b9 M8 E% s$ X
- {: d5 }2 ~, X0 A. _
- List<string> list1 = new List<string>();
+ z' k! [7 E+ {; x - Hashtable hash = new Hashtable();5 D5 R X4 l2 a9 v: ?0 X# x
- foreach (string s in list)- h) p$ ]4 e5 V1 d7 @8 o) F
- {
5 M7 c' T$ v( C - if (!hash.ContainsKey(s))3 |9 d4 f( g4 U1 v
- {- O2 Y; |5 J- L* j) u' A
- hash.Add(s, s);
7 A( O# e5 _- y7 {/ P' A - list1.Add(s);5 ^2 c! t; }9 r6 X& o% ~# B$ H
- }, G1 }- @, s% F+ j# k- \. K: R& a
- }
+ {5 s! b: Z" E0 x - hash.Clear();: g1 g- R7 v9 Q! ~, D9 h n
- hash = null;
; v3 o+ y9 D. j$ P - return list1;
2 X( N/ H% M3 d5 w5 L2 L - }9 j2 _+ {+ b9 F2 g5 F+ j( _6 S
- #endregion
复制代码 3 [/ i6 J' a7 ?/ ?9 R) x- D' _5 i& X
@# [+ \0 J# `6 J: H9 u9 R
|
|