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加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1
FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9947|回复: 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 抓取全站链接
    / @7 X. x: r# I) y
  2.         public static List<string> GetAllHref(string url)
    9 D4 U0 c/ X, D' J; O
  3.         {
    6 U1 F3 z* w5 g2 `% R, K1 |, T# \
  4.             List<string> allHref = new List<string>();
    & ^, O  }4 l5 r
  5.             try! s$ P7 @) t& [
  6.             {4 }7 C# R: d! y2 T1 F
  7.                 string strhtml = soso.getHtml(url, "", true);
    3 T; |  u# W5 O  ?
  8.                 if (strhtml != "error")
    1 k/ G# @, v. ?( B9 ]0 }; E
  9.                 {0 R5 e+ j% Q$ z' J, a% D
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    8 |! e/ R( i7 L: D0 `  D: _
  11.                     MatchCollection mc = reg.Matches(strhtml);- ~* d# k9 K9 _* b/ O; F
  12.                     foreach (Match m in mc)
    9 x7 c4 R) X$ F9 L& a
  13.                     {7 W. H0 B, i% v0 y! q, ~
  14.                         Uri uri = new Uri(url);
    * t  r0 {3 B# R" e. u
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    + W0 P3 b% C) U5 T- g' v
  16.                         string fullUrl = "";0 O" P! B. s' e) J
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    " [$ L; J# K+ H! A8 Z
  18.                         {
    / j! G7 T* x' e! d% H6 u* p# g1 \
  19.                             fullUrl = m.Groups["url"].Value;
    ( Q( j9 l8 M4 s8 R6 l
  20.                         }
    5 H0 K* ]- j! m  L
  21.                         else
    6 G( a6 k, A4 b; q, C
  22.                         {+ E' Z: C7 X2 _4 q
  23.                             fullUrl = thisUri.ToString();" }; n# n0 J1 m$ c+ D& k* ]
  24.                         }
    5 z0 q4 E& ?: ~2 }
  25.                         allHref.Add(fullUrl);
    + A  a$ S! y5 Z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);, {( n5 J+ o! `$ z$ S
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);/ ?2 T- W# h! O: v& y
  28.                         //Console.WriteLine("补全链接:" + fullUrl);8 b6 y! l8 t' M( D0 F: Y
  29.                         //Console.WriteLine("…………………………………………");
    ' o- ~, t6 N1 H& R& b
  30.                     }
    ' u3 f) V% B8 ?
  31.                 }
    8 i* m! L9 M/ M# o
  32.             }
    4 u) J9 F* l# A5 J! h( s
  33.             catch (Exception ex)7 O  F- }1 |8 t  b
  34.             { }, H6 ?  R$ ]) u$ v# Q) X
  35.             return allHref;
    ( V8 Q9 o: E! I8 `
  36.         }' u3 Z! [2 _/ q% V' Z/ @
  37.         #endregion
复制代码

+ T3 ~, y. w4 v# d! a. s5 K5 _% b1 b

  1. : [- j- y. F* }
  2. 2 Q9 b% K9 B' }

  3. 1 {, x1 i1 X6 p
  4. #region 数据去重
    + E8 B" ~' l  B6 C1 O- i6 u; Y2 h
  5.         /// <summary>9 ^  U+ t, \' C" U, _6 P5 e, ^
  6.         /// List<string>去重1 a& t1 o5 Y9 [9 W
  7.         /// </summary>
    0 D3 E; k* _5 b+ Y) v2 t2 c
  8.         /// <param name="list"></param>
    ) l* F, ?& B$ `7 |( U( X1 W0 W# C
  9.         /// <returns></returns>
    $ V2 p! u. i1 _$ {) b7 C
  10.         public static List<string> getUnqueList(List<string> list)
    0 ?! o1 W  m' g1 Z( g0 R2 F( }' C
  11.         {/ i) T2 D" m. D$ L% _+ s) e
  12.             List<string> list1 = new List<string>();* o6 S' p. d; d% Z
  13.             Hashtable hash = new Hashtable();4 n& M8 \" b! Y7 Q4 }2 Q5 s
  14.             foreach (string s in list)
    * ?+ X, U  t4 F  t  S
  15.             {, m7 T' u8 y* q( s7 `
  16.                 if (!hash.ContainsKey(s))3 \4 l+ z5 |/ ?5 T* u
  17.                 {
    6 H2 n+ U1 d. q
  18.                     hash.Add(s, s);7 m3 J9 V; @' Z& }
  19.                     list1.Add(s);
    1 k6 {% B9 \; L* }
  20.                 }
    ) X/ r/ N, l7 c8 G0 M8 A. c
  21.             }+ `7 E/ G/ G' ~0 u& Q
  22.             hash.Clear();2 _0 @, w( V- {* @. Z
  23.             hash = null;5 c% n& Z) T/ {/ o
  24.             return list1;# B, S9 j( \% L
  25.         }+ z4 k9 X$ n5 t- v( j" k8 g3 w
  26.         #endregion
复制代码
) M8 s! S$ z! l

$ _9 c3 G3 z1 K2 s0 b3 ~

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层

! u( i( |2 {( n7 I! Q0 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:202 `% u0 N: D4 s0 N6 n; C
十分感谢!!!非常感谢!!

! I4 Y! h. M; X缺少一个gethtml,用下面这个:
: Y& J+ b5 |$ P; J# I: \9 \
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 + d+ _4 `) v8 }( t
  2.         {" l% Q% j6 K" a% y- e0 @
  3.             string strWebData = "error";
    + `% `- B7 p' D& L
  4.             try4 a) G- }" R0 ~# e+ [; n' Z
  5.             {0 U& i" V6 m7 P* M# Y+ K
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient , y0 S! z, Z3 l) S" Q
  7.                 // 需要注意的:
    $ o, N4 W; F7 C( s
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 3 f& S4 T# c+ ^  b
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 4 O5 G1 h1 O8 g  X; e# a
  10.                 // webclient.Headers.Add("Cookie", cookie); % a0 q- J9 N& c# \5 }
  11.                 //这样可能需要一些重载方法。根据需要写就可以了! ?5 K. N5 T2 m2 s
  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)");6 F1 M* X6 E, @" O4 u
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");6 l0 _& _# z/ J- m; Q2 J9 j. N+ t
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    4 V, C: w5 |. ~! T
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    % A$ `0 k; U% F0 l
  16.                 //如果服务器要验证用户名,密码
    ' D0 [6 R1 z5 O- A2 E8 p4 {
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ) E9 [  h0 ^& G" p& m  B6 B
  18.                 //myWebClient.Credentials = mycred;
    , G2 ^' A- p+ d' Q* o; S
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    # S' x0 o2 E& N
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);. u7 h9 B$ C& l5 g$ |$ j9 t
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);5 X/ E, l$ L3 a
  22. ) p; o0 L8 f. ?  F8 z8 }% t# [
  23.                 //获取网页字符编码描述信息 3 I; V  j+ s; Z( ^3 |7 L" H
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);: D8 [0 ^- m3 F8 U
  25.                 string webCharSet = charSetMatch.Groups[2].Value;' V, B7 Q$ e3 o$ v3 ]
  26.                 if (charSet == null || charSet == "")" u4 M: \0 f7 t
  27.                     charSet = webCharSet;
    % R& i6 K" q  E4 ?
  28.                 if (charSet.Length > 0), G2 T# K( _( f- F* m' E! l
  29.                 {
    * e1 {( u+ w' p$ F4 J
  30.                     charSet = charSet.Replace(""", "");; l" y0 V+ b5 }- T8 J# V* m
  31.                 }
    8 z/ `' U% z2 g& H' f6 n
  32.                 if (UseUTF8CharSet)
    8 X9 H% A2 |9 `6 H% c
  33.                 {
    6 ~7 W8 D& F5 _; W- q! |2 d( H9 I
  34.                     if (charSet == null || charSet.Length == 0)
    0 u4 [( k3 i# Z* m0 q
  35.                     {% D$ H/ I  S, `2 ~* e) z' n3 G
  36.                         charSet = "utf-8";6 E+ _. M  A5 Y: |5 N/ Z8 |
  37.                     }
    ' ]  u: b: z+ W% Q' L
  38.                 }
    3 N$ F1 v) l* C) [7 o' @
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    7 ]" }/ O- W2 Q. S4 R
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);7 ]5 Z9 M4 U3 m  g& K
  41. 7 G* N, e( n* O2 u( v
  42.             }8 z. w$ j/ f" j8 n7 g' q: q
  43.             catch (Exception)# A8 a- E; u+ @: N
  44.             {
    2 c2 A& ?9 D9 m0 o( Q! r; v; P
  45.                 strWebData = "error";
    ; Y# [7 N/ k5 e5 h
  46.             }4 Q0 {' z" M  r6 V

  47. * x" |$ w' A$ t# E# }9 u/ F
  48.             return strWebData;
    8 r8 V) }& z. D" q1 }' h$ H  n, o
  49.         }
复制代码

" ]7 |8 a* V8 K2 H$ A( Q" v8 _
2 \* l% e4 |8 O3 c1 S
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-11 01:31 , Processed in 0.052781 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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