AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
⚡️AdsPower:安全不封号,高效自动化Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理各种主页、账单户、BM户(优势)
⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户海外CL企业户源头
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量FB稳定代理/住宅IP/ADV50打五折
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区跨境债务催收/风险代理
高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9872|回复: 7

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

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接* |9 j* M5 y# I' O6 q
  2.         public static List<string> GetAllHref(string url), r2 ~9 t9 d" ^1 `" l
  3.         {
    # H4 }: w/ T* k2 E! `* D/ O8 M
  4.             List<string> allHref = new List<string>();4 C9 g$ j1 i4 l: Q0 o% Z& ^! c  o
  5.             try( K9 ?0 ?, }* s9 c3 s) I8 E$ R" a
  6.             {
    % T1 Q7 K9 H% ?* y  w: v$ Q4 D& G
  7.                 string strhtml = soso.getHtml(url, "", true);' E& F+ }  w  b7 H
  8.                 if (strhtml != "error")
    $ b+ P0 R4 W: \9 z  A  N4 U
  9.                 {
    9 H6 ~* |' w* z; Y" E2 d! R* v+ K+ @
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    3 H$ w' ^- B; E, }. u/ ?
  11.                     MatchCollection mc = reg.Matches(strhtml);
    5 z, X# B$ C  Y# ^$ ]8 J
  12.                     foreach (Match m in mc). C2 D7 o& E, f% g% |! u
  13.                     {  Z4 L( u" p: c$ K# f, r
  14.                         Uri uri = new Uri(url);7 Y  P4 S& p5 h3 N) I6 E+ g3 T
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    4 Q5 f* B( l7 |% r3 {; Q5 e
  16.                         string fullUrl = "";
    - v" ?% e. `2 |5 p$ x: o
  17.                         if (m.Groups["url"].Value.StartsWith("http"))2 L1 r9 d( _! ~
  18.                         {
    * m: [# N/ S6 o7 N1 C0 j, }
  19.                             fullUrl = m.Groups["url"].Value;
    " G8 X6 }) H/ F- j
  20.                         }
    * k# ~" m4 x2 z8 T
  21.                         else
    * ]5 U8 l) ]3 h  c# _2 c
  22.                         {7 r5 E: o3 c& B: F
  23.                             fullUrl = thisUri.ToString();
    / J+ U, B$ t, b
  24.                         }: y1 O7 I. P  p* e5 E& a, L
  25.                         allHref.Add(fullUrl);% ?  C4 D' u$ [) G* J" C$ W  f$ I
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ! m3 I$ R: j* W2 _/ }
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    - {0 I$ d  _6 r( Z2 T
  28.                         //Console.WriteLine("补全链接:" + fullUrl);, ~% l' f# B9 K. c
  29.                         //Console.WriteLine("…………………………………………");
    ' }  e& T! ^, C# `
  30.                     }
    % H; C- a$ e+ T4 R) r' H5 k
  31.                 }7 l8 ?' L" G5 T8 `3 m
  32.             }. x& i  d0 N& q
  33.             catch (Exception ex)3 }6 I7 P: o  h5 C
  34.             { }  j1 Q) t9 ^: b; D; _  B
  35.             return allHref;
    , B0 d: k( T8 f% a! i3 H* f
  36.         }( C% y! t8 V9 m+ t/ C% a$ s2 S
  37.         #endregion
复制代码
0 |, m9 e. q) B# x. F
% m1 v' E1 Z4 A  ?+ L' O6 f

  1. % y0 M0 H: E+ e

  2. / I# i- P* x  B
  3. . l& B5 t5 X- f: l: \& T
  4. #region 数据去重
    $ b: f, M! U/ ]; q: z& @/ K
  5.         /// <summary>9 t( D7 Z0 D. R" F4 ]6 W7 ]) e
  6.         /// List<string>去重
    9 Q7 D: t2 k0 U. o
  7.         /// </summary>. R. d( y, A. Y1 `, X
  8.         /// <param name="list"></param>
    7 C5 s$ R  w# y9 {  v. m
  9.         /// <returns></returns>, F6 X; M9 W  p* h! `
  10.         public static List<string> getUnqueList(List<string> list)# [6 ~3 p) p* B0 D, r1 e9 I
  11.         {/ b% P, Y& }+ y, @7 m' Y
  12.             List<string> list1 = new List<string>();2 D, l/ C0 B. O/ q, w
  13.             Hashtable hash = new Hashtable();
      q% j8 ]2 U) m. u& Y1 f/ q7 }( W
  14.             foreach (string s in list)
      p4 z. r; v2 \9 J
  15.             {/ z  l/ a, R: @$ h
  16.                 if (!hash.ContainsKey(s))
    & Y& ?, X% P% T3 c: J, @
  17.                 {% n- `' |4 b, n! b5 ~0 b8 T4 G
  18.                     hash.Add(s, s);
    ) C% S1 d' s. ]) W, }# \
  19.                     list1.Add(s);
    , z  N( G5 O  U' B
  20.                 }8 G3 Q# ?( ^, U
  21.             }
    6 c$ p" Z: q2 |
  22.             hash.Clear();
      Y" T5 f2 _* d" M$ z! ]
  23.             hash = null;
    / Z6 A5 l  x5 B/ v2 b. G2 x
  24.             return list1;
    0 P7 r% E9 R' s& E8 v
  25.         }  ~  T9 t* K3 M* C3 l2 n8 J
  26.         #endregion
复制代码
# e1 ^- F6 L& o  g* h. e( F  f
* V& f3 |6 o$ w' w% G

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
# h& }$ A# K/ f9 Z* o; b
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20' Z4 y+ Q' P3 g9 Z
十分感谢!!!非常感谢!!

3 [0 k0 x8 H5 e2 q缺少一个gethtml,用下面这个:
6 [8 C' a2 M/ T% [2 Y/ R
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    , H( C6 b# u* A  `
  2.         {! B) {0 `) ?2 W( h5 w1 G
  3.             string strWebData = "error";7 J0 |6 F) O4 v% j6 |4 I) x+ @
  4.             try
    9 h: l, ]+ Q& \. Q( _4 ^
  5.             {
    ! M* R+ l! u! c. Z6 F/ U. f
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    : Z7 x( T% G$ E- z
  7.                 // 需要注意的: ; n3 M/ b. k+ _; F
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    / b8 g6 F2 q+ z& q5 }
  9.                 //这是就要具体问题具体分析比如在头部加入cookie : m5 |& C. Q; T0 s( Y6 z+ H
  10.                 // webclient.Headers.Add("Cookie", cookie);
    , _! w0 |+ j/ I% L4 `1 |
  11.                 //这样可能需要一些重载方法。根据需要写就可以了- O8 _# n3 n" a; |- L
  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)");  ^# \3 {1 O8 q* G9 j% j
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");' d0 c9 {4 S5 U2 b4 _5 f" d
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 % q9 i2 ~% |% Z2 C
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;5 u' F& g. d1 s% d7 Z( b2 q2 O
  16.                 //如果服务器要验证用户名,密码 2 P! r' J! t8 z* N$ c& _9 {+ Y
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); : _% P& D: |7 }$ [, ~9 [0 c( @" `' q
  18.                 //myWebClient.Credentials = mycred; + @0 C2 J3 ]* h! Y* Q
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) & i/ k9 b8 k' k) f+ p+ g% G
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);/ \* [  e) o! N4 P3 [$ S! n& K$ P  a
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);6 Y) K: O0 j% z- D: w( E$ S9 S

  22. ) C1 ]2 k# u1 H, ~: K
  23.                 //获取网页字符编码描述信息 3 _# w2 d  \& K& P( M
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);$ T4 X/ r" B6 O( \
  25.                 string webCharSet = charSetMatch.Groups[2].Value;+ Q$ f" u2 \8 _5 n" p* B/ y% V! w
  26.                 if (charSet == null || charSet == "")
    + d, w% A. t) Z, G! @; d
  27.                     charSet = webCharSet;; V+ U: C9 r  \7 s
  28.                 if (charSet.Length > 0)
    ) k: Z# k- x6 f* f
  29.                 {
    ' X- f  Q' D) S* [& z
  30.                     charSet = charSet.Replace(""", "");/ u/ n7 q, f0 h1 M7 Q- X1 B
  31.                 }
    * E9 _9 d+ Z$ k. B8 K
  32.                 if (UseUTF8CharSet)
    7 T$ l4 R% p3 I/ l' J" p2 @
  33.                 {- L5 ]1 b- `5 q/ c7 \. h) D
  34.                     if (charSet == null || charSet.Length == 0): o& W- }3 d7 ]8 F+ q
  35.                     {3 H. U/ s% T- ~# B
  36.                         charSet = "utf-8";
    ! E+ g/ ], Z- C% A
  37.                     }+ m: K7 U9 U7 P. K" @, T
  38.                 }$ v+ U( ^+ G4 W7 z  P. J
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 @: p4 j' ?: X
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
      s2 S# A1 U( F" Z3 l8 m* i
  41. 4 Z$ R+ F$ R1 \( W
  42.             }
    - Q7 s8 E0 a9 d% ^! C' @
  43.             catch (Exception)
    ) w; l( \4 T0 W
  44.             {& \" g5 z+ Q" t# p' ?' M6 o
  45.                 strWebData = "error";8 d7 D6 e7 H4 R/ Z
  46.             }$ k- P. ?2 F" l9 S
  47. ; i6 }8 V  }4 f1 C2 Z
  48.             return strWebData;
    ; G1 k; o8 {3 W9 y- @' ?4 z
  49.         }
复制代码
9 K$ ~/ j) Y/ @3 X# O, Q
6 D# p: V$ n  C& |$ N
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-17 12:01 , Processed in 0.054196 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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