找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
⚡️按条S5代理⚡️静态⚡️独享⚡️5GMediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户
Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户
独立站⚡️开户投放Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理全球虚拟卡, 支持U充值
【15 年团队 - 广告自动化系统、定制开发】【ActionKey】Meta API 桥接令牌尤里改 - FB 稳定投放【神盾 AI】Meta 广告资产防护 永久免费
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手
TK加白户/二解户/FB海外户/GG老户最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审FB企业户海外户,授信户,TK加白户
联盟收款/海外资金下发/服贸结汇✔Taboola海外户源头全球效果广告投放平台|Vertoz IngeniousPlexSX.ORG 住宅IP | 凭码ADVERT3免费领3GB
广告位出租   
查看: 10315|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

215

广告币

298

积分

初级会员

积分
298
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
Binom_AdvertCN
回复

使用道具 举报

2

主题

1488

广告币

1830

积分

高级会员

积分
1830

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    6 n- _. u6 \. n. p
  2.         public static List<string> GetAllHref(string url)
    ! g* z! I+ x( M. r; x- n
  3.         {  S/ _# j' s. C3 k4 \
  4.             List<string> allHref = new List<string>();5 {( W  {1 P6 m, x' ~8 o
  5.             try) n' ~6 ?  I3 k' u+ x5 J6 Z2 K
  6.             {
    4 h: x  l$ o% r- E. ~% P! ], L2 G
  7.                 string strhtml = soso.getHtml(url, "", true);
    & S' h# {  T; i7 Y: ]' E, ~
  8.                 if (strhtml != "error")5 G( ^: A1 e* J) n
  9.                 {
    / r) T8 `# g$ @% r
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");8 j9 r# G& [' z) u7 p3 m
  11.                     MatchCollection mc = reg.Matches(strhtml);
    % W& F" C, ~9 A$ L
  12.                     foreach (Match m in mc)
    1 D' d" o$ W. {6 X6 U! I% v
  13.                     {  t  S, G- w4 D6 X# ~
  14.                         Uri uri = new Uri(url);
    * j+ i/ Q% M- B) r' S  u
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);& I/ H) T/ u/ Q/ S6 ^0 r
  16.                         string fullUrl = "";* }/ R2 G, k! p1 u
  17.                         if (m.Groups["url"].Value.StartsWith("http")), p+ H& p6 c! H2 M, y* w
  18.                         {
    ) F6 T; f9 O8 g) H  U
  19.                             fullUrl = m.Groups["url"].Value;
    9 U: j: G% X( L, Z* r
  20.                         }
    & _, Z: }, f& N/ S
  21.                         else
    ' Z$ r* Y" h2 i& d' e+ {1 L
  22.                         {; q4 u3 u, q; o7 }9 m% P
  23.                             fullUrl = thisUri.ToString();$ A0 e- U( p* x
  24.                         }7 r1 L. {; N# A8 q6 k; {. m- L
  25.                         allHref.Add(fullUrl);
    * r. n6 C  e8 I
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ( [- K* G: w6 }2 v6 Q! H
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    8 {" l0 b' [% L0 V
  28.                         //Console.WriteLine("补全链接:" + fullUrl);' @* \0 d3 t2 r* g$ g! ]7 h  b% Z
  29.                         //Console.WriteLine("…………………………………………");
    1 R5 O% f) y2 i: h' ?% T0 X
  30.                     }  M8 m) o0 W2 ^$ q- @
  31.                 }
    & L) B+ B# H+ r+ M0 B
  32.             }% R+ j1 R* }2 v8 T
  33.             catch (Exception ex)
    4 z6 L: q+ o3 N# Z1 W
  34.             { }! k7 z8 h9 P. L# F# U' I
  35.             return allHref;" K+ x# W& D) f+ z- D1 |" a3 d; C' g
  36.         }% a; w6 s! P* ~7 j( i! n
  37.         #endregion
复制代码
( }" V1 |+ `8 E. T3 t
# D) T1 A# J& Y& G
  1. ! u3 i5 T( G6 c3 v) J' H8 S
  2. 3 ^, M6 F# I9 r' u7 W/ E1 o! z6 y
  3. 9 {; _5 D) a5 R. ?% O% G8 D' p
  4. #region 数据去重2 n, v' a8 U; S- v
  5.         /// <summary>. X- a7 D* h5 V
  6.         /// List<string>去重1 p% }2 r, S% o- U& [$ E
  7.         /// </summary>) r, {( L& v9 u. @
  8.         /// <param name="list"></param>
    $ D, T1 |  H. Z  {! ~: s, R* O
  9.         /// <returns></returns>
    . `- j2 o8 {! ?. q- W) c( B
  10.         public static List<string> getUnqueList(List<string> list)- w0 T7 m, D) Y+ n% n  I, d  D/ u# K
  11.         {
    % |+ y4 w$ Z( _' j3 M1 c9 w
  12.             List<string> list1 = new List<string>();' ^/ f8 G. Q3 ^* V/ R
  13.             Hashtable hash = new Hashtable();
    & e) N  a5 D% G  ^8 j$ Q, [
  14.             foreach (string s in list)
    - K) Q! }- G8 ~3 d
  15.             {! n+ D4 U; g9 Z! z! U: a/ A
  16.                 if (!hash.ContainsKey(s))
    * K0 b8 Y. T1 S0 H8 ~8 C& ^
  17.                 {( ^/ Y; g& p1 P& Q0 \, b/ H+ B
  18.                     hash.Add(s, s);; o$ S1 I4 r. C- Y2 j- Z
  19.                     list1.Add(s);) k- j& O" M& f' W: y
  20.                 }. k' ^3 n! G6 ^6 Y2 a7 c. |3 Y
  21.             }
    9 Y! ?$ l* ^1 q2 M/ @
  22.             hash.Clear();; B8 G) z9 o$ ?6 |7 ]$ k+ c  b
  23.             hash = null;
    + x6 \3 B( m3 {7 L% e" H4 }: }
  24.             return list1;
    " Z- F2 j. h" ?3 s
  25.         }8 G, E. x5 ^- {* d
  26.         #endregion
复制代码

6 u2 o: S& ^' Y0 Q/ H
* Q! {. ~2 E6 J- M/ h: ]- p

点评

谢谢分享  发表于 2016-2-27 15:15
十分感谢!!!非常感谢!!  详情 回复 发表于 2016-2-26 16:20
回复 支持 反对

使用道具 举报

36

主题

215

广告币

298

积分

初级会员

积分
298
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
! a0 K( t8 j$ @  w- M
十分感谢!!!非常感谢!!

点评

缺少一个gethtml,用下面这个:  详情 回复 发表于 2016-2-26 16:23
回复 支持 反对

使用道具 举报

2

主题

1488

广告币

1830

积分

高级会员

积分
1830

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20. |' {+ f9 g7 b- B0 k
十分感谢!!!非常感谢!!
5 s6 d! _9 E" Z/ @
缺少一个gethtml,用下面这个:
, ~( y+ Q1 L6 t6 b6 I- W& B1 c
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    4 g8 F( G1 ]" y* z' i* h
  2.         {9 k! U8 _8 ]% G. c
  3.             string strWebData = "error";/ k  e' ?7 g, K7 H* Q9 N% I
  4.             try
    7 G) N  X5 B6 m6 r6 Z; n
  5.             {6 b5 W& w7 p3 R  G4 Y/ v
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    8 e) ~# _" Z! H7 [0 X% O1 q) t
  7.                 // 需要注意的:
    ! B4 C' S' M4 p) K: t& p: \
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 " n4 _5 F) k8 D- g% ^) ?
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ) k% b7 u' r1 S" P1 ?
  10.                 // webclient.Headers.Add("Cookie", cookie);
    6 l% g5 h( K% |3 G! M$ W7 m
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    1 q% N" I; N; z
  12.                 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)");
    & Y0 _2 p' J4 N$ y  L
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");, O! F; `2 P% U- w- `# J4 F
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 / J2 _+ ~0 U( B# i; R3 H. @
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    % D8 S, _( O; i# n* q) l
  16.                 //如果服务器要验证用户名,密码 1 q- W( ]9 m. S) P3 P
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ) ~5 g& f& ~* s7 n: j
  18.                 //myWebClient.Credentials = mycred;
    3 ]: j) j5 W! m0 J  Q7 O1 D
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    % w7 g2 z7 h. l+ l6 h
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);2 Q. T7 K& r0 k$ p: W" s# |* G
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);/ t; b  S2 w# D

  22. : s0 F& N8 {* \3 k. H9 r7 ^
  23.                 //获取网页字符编码描述信息 1 n0 z. f2 c- K, [. {& v
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);; k$ C3 u; b1 p2 N. _. b  U# l8 I
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    6 r, c# ?1 T; K  t4 C; Q
  26.                 if (charSet == null || charSet == "")
    # T! M1 c6 U! j0 E
  27.                     charSet = webCharSet;3 u. o0 e5 E! Q1 ]$ q
  28.                 if (charSet.Length > 0)# U/ Q8 b( N9 x
  29.                 {0 X: N# x* C6 D  ?% H) W
  30.                     charSet = charSet.Replace(""", "");7 b, k6 b5 p- m2 X
  31.                 }5 h& v5 D. z! B/ _7 Y
  32.                 if (UseUTF8CharSet)9 @6 k/ S2 c3 |5 h% k, j$ W! `
  33.                 {% F6 Q( _' `; F; \& X
  34.                     if (charSet == null || charSet.Length == 0)7 f! y! b+ C' r, j" V5 n
  35.                     {
    7 q1 Z% [5 W) P
  36.                         charSet = "utf-8";9 V2 r6 A# ?# s) T3 U
  37.                     }8 i& y* N; k% h& ?+ X- g
  38.                 }' [8 G) C  t" j2 J3 B
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
      |' ]1 j0 P7 k! ]. b+ `
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);( @& R- F2 w$ a( d

  41. ( q. o& K6 Q& n, k$ [, _* I" h
  42.             }/ X8 [9 Z* u7 n/ ?6 B% [
  43.             catch (Exception)3 d1 n9 F8 a6 v
  44.             {% a1 z$ j8 m( p. N+ |) r! n3 G
  45.                 strWebData = "error";+ X- \' r. E5 a% @) I# k# }+ X
  46.             }5 E4 U8 t* y4 c8 _
  47. " M5 o2 u: S! g. |5 [' r9 F
  48.             return strWebData;+ }0 i/ K: [' R
  49.         }
复制代码

" `1 ]9 \+ x: C! \5 \! V
5 f2 G2 @+ T4 I8 P8 T! R
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

积分
13
发表于 2016-2-26 19:05:59 | 显示全部楼层
weishaneweishane
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|网站地图|AdvertCN

GMT+8, 2026-11-15 22:24 , Processed in 0.073031 second(s), 27 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

快速回复 返回顶部 返回列表