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代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
最大欧洲Nutra网盟BA找量 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理FB企业户海外户,授信户,TK加白户Proxy4Free独家住宅IP池❤️免费测试
联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9997|回复: 7

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

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    2 \+ Y* K) A& t4 o% w4 @
  2.         public static List<string> GetAllHref(string url)
    $ t% r3 o! ~# ?0 F
  3.         {
    ; K5 |0 w& ?6 h/ c# ?3 q  @* r
  4.             List<string> allHref = new List<string>();3 R5 s( {: c+ T
  5.             try
    , Y2 z5 {3 C% R; L- x
  6.             {
    ! u# N4 t0 u' T2 j# c
  7.                 string strhtml = soso.getHtml(url, "", true);4 a+ v) C: o& f' l" J9 R* ]
  8.                 if (strhtml != "error")3 \4 w9 l6 h/ X2 A6 M" {- c
  9.                 {+ m1 T+ @6 {: Z) W- e! n( z2 P
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");1 v+ H5 A2 Y* \. N0 l3 n* P0 Z! C
  11.                     MatchCollection mc = reg.Matches(strhtml);* T2 {6 k8 n, r" j- F, i
  12.                     foreach (Match m in mc)2 E) @5 b5 @3 |; g' K  E8 R& Y
  13.                     {% L) q1 ]5 P6 x; P# |( L0 x" C
  14.                         Uri uri = new Uri(url);, C6 T6 h: \9 K% F
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    , C$ c# m  i' q' d) J. C1 Q! x  {$ u; f
  16.                         string fullUrl = "";0 g4 N2 b& h2 s8 U& c0 j9 W
  17.                         if (m.Groups["url"].Value.StartsWith("http"))% A0 o7 H  y& D& n* }! [2 }* |
  18.                         {) K, p& |7 C/ p. ?
  19.                             fullUrl = m.Groups["url"].Value;- @8 d) V! G* |
  20.                         }
    ' |& H% c; E( O6 Q' |
  21.                         else" h6 ^/ y# F! Y* G3 n' R
  22.                         {
    0 k7 T4 c- ^7 K0 H: Q
  23.                             fullUrl = thisUri.ToString();
    , t7 r0 O9 \" y9 g% N# Z
  24.                         }
    , R7 k8 h0 E+ j5 c
  25.                         allHref.Add(fullUrl);
    : S3 [/ \5 f; `8 x7 w4 V' f# X0 n6 t
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);4 v; `* ]1 t/ @$ T3 D* C
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);# q4 d( D/ ]  B0 e4 d/ M
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ' W" f' v: @" j7 L
  29.                         //Console.WriteLine("…………………………………………");
    ( [% G  t% x0 L1 r0 I5 r
  30.                     }  e' M1 ]: w9 d
  31.                 }0 m4 k, d* K' K$ ?5 A& S
  32.             }9 A( R& N6 j2 q8 h6 d$ z
  33.             catch (Exception ex)
    9 h! Q: J+ I- _
  34.             { }9 z, Y- G7 x) q! X9 b
  35.             return allHref;
    , c' O3 Y. w5 W' f" [6 c; V
  36.         }5 O8 e2 l3 O% k# o8 v& s# \$ C4 Z
  37.         #endregion
复制代码
( A7 o  V! o: O8 p  v
* g( U: ?; h' c

  1. # S' m, ~- ]! Y0 V# |

  2. $ ?! w4 M* g5 E1 d' C

  3. & G2 M# U; D' A4 R3 t6 f0 G
  4. #region 数据去重6 _3 |1 Y# j4 Q3 V& S
  5.         /// <summary>% X4 q" J* E* h" a* u
  6.         /// List<string>去重4 |* ^8 n. k; v5 D5 [# Y( B" Y
  7.         /// </summary>
    9 b" [" A7 B7 n% p: }! C
  8.         /// <param name="list"></param>7 K" }1 q3 _. @7 G2 z  z. d9 p7 b
  9.         /// <returns></returns>2 o, \' E* f9 V
  10.         public static List<string> getUnqueList(List<string> list)( _) _7 c% [$ w( ?. U# k
  11.         {3 ?( B3 W7 Y) ^# C( q
  12.             List<string> list1 = new List<string>();
    % @1 v+ M% _) A
  13.             Hashtable hash = new Hashtable();5 s  Q- O  n" v5 r2 c$ E
  14.             foreach (string s in list)/ _( G! e/ i2 ~( F
  15.             {- h8 `5 p- o0 Q8 Q) a* M/ [  l# F
  16.                 if (!hash.ContainsKey(s)), q; Z6 v" |5 v! u
  17.                 {
    9 x- {) T0 r% p, D1 S
  18.                     hash.Add(s, s);
    + T9 k: }4 l; T! e) B
  19.                     list1.Add(s);
    , I- i4 c' @* ^2 l% k9 H
  20.                 }
    / p! }* ?/ M9 t  T4 A
  21.             }' [+ D" F3 ]; F7 \# E8 c9 Q3 V
  22.             hash.Clear();" p0 w8 h: @" l1 V1 o8 V7 y( c
  23.             hash = null;
    5 C- P% ^/ H! V/ j/ d# v% |4 H
  24.             return list1;) [/ T: P5 i# _/ V( V
  25.         }
    4 c& d0 |3 b4 d  p
  26.         #endregion
复制代码

) K# ~! s+ }. W7 A* q( N% s- }9 b- @  h8 z9 `) T0 C

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
/ k% p1 [' I% Q. W
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20. O, g5 |5 d: Z9 o" |
十分感谢!!!非常感谢!!

! u; X- _* d: O: _) X- e" }缺少一个gethtml,用下面这个:! N, G$ I4 B6 X( ]3 `/ M# y. X
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    0 [* I6 a2 h. N3 G- Y3 i
  2.         {( S5 v8 E7 P7 A( s( F! B
  3.             string strWebData = "error";
    # \; R  H. |7 P: p! y  k9 u
  4.             try3 b" S: e& I- E" T& h
  5.             {& f& T6 U4 f1 V$ C! ^
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient $ f8 \) c. f" D5 \# M- r; n8 s/ O
  7.                 // 需要注意的: ( u4 q. [: n1 H( {9 l( F
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    % w) J& v. S# U2 n/ W
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 3 v) y* n- C; l9 t4 k0 T6 z
  10.                 // webclient.Headers.Add("Cookie", cookie);
    6 d) z2 O! t4 y; ?
  11.                 //这样可能需要一些重载方法。根据需要写就可以了! {( j1 I7 z2 K, P
  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)");4 U: [: L) v% F+ x  a$ V
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    8 B9 O8 n) N" m% l
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    - P- l1 y+ ~& f. g7 o4 [1 N2 k
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;( {& C8 g% L% N. n' E3 x
  16.                 //如果服务器要验证用户名,密码
    " _" b0 ?! F2 b$ j  L) q. @
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 3 h" m4 Z* I" D; j
  18.                 //myWebClient.Credentials = mycred; 2 V8 t: \/ t8 @( S# h
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    9 p# D" W& Y! ^' d. i3 d; m- }
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);( \/ g. i% K1 _; y
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ' [: `+ S0 v# t* Y9 ]. I
  22. $ h- f$ [  D" @. W# {( g- I
  23.                 //获取网页字符编码描述信息 / Y7 O5 m* z5 S
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    1 e0 a/ f+ _' p4 J; Z- {8 [
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    8 Z; z; v# s6 e1 K
  26.                 if (charSet == null || charSet == "")
    % p0 j4 n) M: }- }& F7 t3 Y
  27.                     charSet = webCharSet;
    ) G* Y% l8 S( j6 P
  28.                 if (charSet.Length > 0)
    ( w+ Q) J: s8 h
  29.                 {
    7 Z3 k& H' b( c2 |1 {. ?6 N
  30.                     charSet = charSet.Replace(""", "");
    ) v9 f. e" \+ V  A% S
  31.                 }4 B' X$ B; L5 O2 P8 @
  32.                 if (UseUTF8CharSet)
    " }- D3 Q3 i+ F; D* b' o9 k3 q
  33.                 {
    $ @5 U  L, I6 }
  34.                     if (charSet == null || charSet.Length == 0)
    3 y! B7 c6 h# S( v
  35.                     {2 X$ s# y' V0 P& {% m9 J; c
  36.                         charSet = "utf-8";/ |* C* S% H, F0 Z
  37.                     }
    0 d4 M# k9 q# T) m- {) V
  38.                 }1 G, f5 r* ?, L
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)  @, ]3 r# ?( L
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);  u6 ]+ f6 j! k6 q

  41. / q: d) {1 T0 `- `4 Q
  42.             }" j: j% N0 h5 h1 o5 s% c+ [0 P. r+ }4 w
  43.             catch (Exception)- T/ U; U# ?/ B7 f
  44.             {$ [9 B$ B# L5 S( H
  45.                 strWebData = "error";7 f; _$ ~& ?/ [
  46.             }
    ; \3 v0 M/ x6 r; |& Q! m( H

  47. / T$ R% V0 e: W" o* v
  48.             return strWebData;2 w/ w" C. _+ ~5 x7 p( S; y  X: T
  49.         }
复制代码

* a$ Y8 y+ P3 _% G# z; j
; Z$ |+ Y* F0 S0 R% B% x/ V1 n6 g# ?
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-28 14:25 , Processed in 0.054048 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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