找回密码
 立即注册

QQ登录

只需一步,快速开始

Google-Bing-Mediago-Criteo开户
⚡️按条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/条双ISP
FB资源,账单户,分享户,国内一手TK加白户/二解户/FB海外户/GG老户最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审
FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇✔Taboola海外户源头广告位出租
查看: 10286|回复: 7

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

[复制链接]

36

主题

215

广告币

298

积分

初级会员

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

使用道具 举报

2

主题

1487

广告币

1829

积分

高级会员

积分
1829

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接& y/ B1 v: L. |# S7 R3 ^
  2.         public static List<string> GetAllHref(string url)
    - F$ n( G! \$ w( s) @, E
  3.         {4 g& u; W- J! G2 ]+ h# g2 x
  4.             List<string> allHref = new List<string>();: \/ b4 X% @; O" O
  5.             try
      R4 `. F+ _+ ]7 p
  6.             {' h) p% J" {) `  \6 t
  7.                 string strhtml = soso.getHtml(url, "", true);/ |7 }1 m4 E4 l- b1 h& d
  8.                 if (strhtml != "error")# l! i1 l* P3 H
  9.                 {6 N$ C5 @7 q0 {
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");+ O) l' {: C( K7 e/ A
  11.                     MatchCollection mc = reg.Matches(strhtml);4 X2 y/ D' p) m1 {$ ?8 S
  12.                     foreach (Match m in mc)/ T1 ~6 c/ j! r& s4 `# {5 o
  13.                     {
    . p2 M) R3 f1 h1 q* u, W1 A
  14.                         Uri uri = new Uri(url);/ ]- f6 D. E* D' @! z
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ' J: o) \( ^! T2 c0 D) U
  16.                         string fullUrl = "";3 s* j/ }- I9 ]( u* S" R& J1 h2 ?
  17.                         if (m.Groups["url"].Value.StartsWith("http")). p$ G) {5 T6 s) k" ]
  18.                         {8 g4 z) C$ G/ V! x) Y$ U
  19.                             fullUrl = m.Groups["url"].Value;
    . K! s9 k+ D+ e! K8 A
  20.                         }) W: X2 X; m1 R: p8 B' c. S
  21.                         else2 u8 J( f$ @+ G4 w; E
  22.                         {" R4 B8 A3 q% H) t
  23.                             fullUrl = thisUri.ToString();% q. ?1 N/ }5 O( l( x
  24.                         }
    3 n: i! H1 b# c4 I( d
  25.                         allHref.Add(fullUrl);
    ' K" B, l% w. a: y- I' _
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);% Q+ R/ q/ u" P% v
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    . [$ u$ y! X. _' G0 V
  28.                         //Console.WriteLine("补全链接:" + fullUrl);1 o) B+ y- G8 ?4 Z0 e
  29.                         //Console.WriteLine("…………………………………………");6 T6 H" c; V: h5 }
  30.                     }# s' \5 S: o; p
  31.                 }9 W- H$ F7 `0 u' }* |) F2 ?( J( q
  32.             }
    * w6 w/ L, S* n
  33.             catch (Exception ex)
    3 Y$ C3 \  J9 r) T4 R+ B
  34.             { }! G" A7 k& g3 H. b
  35.             return allHref;
    & k  @* T* G6 T+ {+ U. ?
  36.         }
    1 M. f) k; h* k
  37.         #endregion
复制代码
" X2 m* v! \5 b/ b; V
: |( q; L, i0 p6 I8 y$ j- X- f$ u: F
  1. - T3 ]0 Z; H9 L; m

  2. * n7 E: v( r8 z$ }& \3 {- ^
  3. 5 e9 ^) a, t- A# q0 @9 k+ I! y
  4. #region 数据去重
    5 n  F* G1 E" U2 R5 \
  5.         /// <summary>
    . X% a  L+ ]- i! q" E1 ?# f8 r
  6.         /// List<string>去重
    5 }5 j8 m  m  W5 z# z7 _9 B
  7.         /// </summary>- l2 x7 F' C  a
  8.         /// <param name="list"></param>7 m/ t8 T' g% f9 t* b# m
  9.         /// <returns></returns>8 G- [( X; I# O' t
  10.         public static List<string> getUnqueList(List<string> list)
    & [5 h( C+ R1 K- b  H: Z/ }$ l
  11.         {9 E. V5 E; \" s7 D: c* m9 w" m
  12.             List<string> list1 = new List<string>();- R7 H& d1 M. L7 u4 ?+ Z3 _
  13.             Hashtable hash = new Hashtable();
    : W( G' n7 r5 N+ N" Y8 ]7 W
  14.             foreach (string s in list)  B) L; g: }' X) ~
  15.             {
    / W+ v$ m0 @* V6 m: Y+ B: W
  16.                 if (!hash.ContainsKey(s))) \  k* Z: N; h4 Q$ E+ |2 K$ U/ R% x1 s
  17.                 {0 d' {: d4 _) \* f) I' T# ?2 Z4 r
  18.                     hash.Add(s, s);4 s$ n1 Z1 v- ~' r8 @: N+ n
  19.                     list1.Add(s);
    : n1 F1 J7 g9 E! m* y/ j
  20.                 }
    - Y+ i" Q9 n) G( A* A5 ?
  21.             }
    2 r4 [. b/ y7 Q
  22.             hash.Clear();+ z! ?+ M  j6 i( H
  23.             hash = null;6 m1 r1 k& }2 B+ J7 B, M
  24.             return list1;7 p* A& A- b) J$ R6 }+ c) J+ P
  25.         }
    ' p7 `) u3 a; t$ |' \( L# C
  26.         #endregion
复制代码

. A2 i3 p2 D3 B
* F/ ?  f1 O( \6 r- j

点评

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

使用道具 举报

36

主题

215

广告币

298

积分

初级会员

积分
298
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
& P& j, j% X* z6 W9 s
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1487

广告币

1829

积分

高级会员

积分
1829

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20- R' g: t) D/ T6 n: C
十分感谢!!!非常感谢!!

/ u0 W; W7 Y4 r缺少一个gethtml,用下面这个:
' `) Z0 l# C" u" p- @
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 9 x6 r5 R% _, n' k4 i" u" E( S
  2.         {
    ; G# ?1 C* P* {: T, c
  3.             string strWebData = "error";
    6 ]" q% ]+ Y0 n% n
  4.             try* ?3 R& T8 `2 K3 T$ r9 @- B
  5.             {/ n+ i3 Z" K: h
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 2 ^4 R9 p. h7 \' H" M. [8 l+ b
  7.                 // 需要注意的: 6 \% _0 E# d  y! l
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 9 t  ]2 z- M! T9 ~. @( `0 D
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ' X+ B5 k! j7 G; w& o) P
  10.                 // webclient.Headers.Add("Cookie", cookie);
    & t9 t# \# L: g* L& ~" M' L* h/ C7 J
  11.                 //这样可能需要一些重载方法。根据需要写就可以了5 _& j$ g2 I7 K) D- o1 P' 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)");5 D4 ~! b$ g$ W
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    + u) S1 F% \; O: f& L
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    " E: E' R, R3 C3 i2 |) W2 r
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;; s. D0 K) [+ l6 K2 X2 ~8 t0 }
  16.                 //如果服务器要验证用户名,密码
    4 |9 ?7 Y9 K  l- C/ ], g8 {1 v% ?
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ( o* j, l7 m; |/ O7 c
  18.                 //myWebClient.Credentials = mycred; + J" L4 ^4 G& {/ ?: C" M$ ^
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) $ _' K* a1 W8 @1 r$ Q* _$ Y
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ; H- t7 X5 t( Z: s) u
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    8 C! e0 d1 d2 R6 R2 Q2 U" @

  22. 6 V) R! F8 X. e- y5 X
  23.                 //获取网页字符编码描述信息
    , `% h7 L: U+ j/ t. ~. P
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    # O  J8 c. C4 D* n
  25.                 string webCharSet = charSetMatch.Groups[2].Value;6 E0 ~* j" w' H' A: L  R4 g6 y5 Y
  26.                 if (charSet == null || charSet == "")! \3 X: ?" h4 m! v
  27.                     charSet = webCharSet;
    , m. T% i; j4 o0 n% W
  28.                 if (charSet.Length > 0)% Y" f$ P1 b/ S: e5 t/ w
  29.                 {2 @9 M$ t+ Z+ d/ x* G8 e
  30.                     charSet = charSet.Replace(""", "");0 a% x! X8 _- T+ g3 j( {
  31.                 }
    3 e' z+ ?/ X0 h
  32.                 if (UseUTF8CharSet)
    6 j+ y. u+ Z6 U& e! b
  33.                 {/ P; z9 m( o) G" ]  d, ^% ]4 P
  34.                     if (charSet == null || charSet.Length == 0)% d" n$ l' e; G, x
  35.                     {
    , \" ^4 n8 Z; A0 u( B
  36.                         charSet = "utf-8";
    - U5 j, u# @& @2 m7 D
  37.                     }
    ( |% K. X: r& c
  38.                 }: Z; a* R$ y+ ]- V1 l" Q
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)* P, [4 \5 V& K
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);8 E& I( e- {* U- ]8 h# j

  41. ( R  |$ d3 V( ~2 t: ~
  42.             }
    & @# D2 M6 \; l" O$ C- R" f
  43.             catch (Exception)0 o9 d6 H. P3 m& X8 R
  44.             {, x& [' W0 `; ?8 c3 L& i  J. F( {
  45.                 strWebData = "error";
    2 ?5 r  [0 G! a! y  U7 _
  46.             }
    % W, b# f& b6 g, x9 R( I, _3 j

  47. ( R1 K' ~9 E/ w& H+ T, l: n
  48.             return strWebData;% E# H3 ^. H) {4 H
  49.         }
复制代码
$ m" d, U; {! l( E/ p
8 z" y  G& t( @" s4 t
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-1 22:47 , Processed in 0.090260 second(s), 25 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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