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充值
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多高品质·稳定高速纯净IP FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作!跨境债务催收/风险代理
高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9910|回复: 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 抓取全站链接
    ( h9 x% S' S$ A" ?
  2.         public static List<string> GetAllHref(string url)
    0 L! B) R* i; [$ c( c$ V
  3.         {
    9 q$ W/ d8 {+ X0 d( G3 [1 t/ x! m* S
  4.             List<string> allHref = new List<string>();) T8 z) V' \, s; C
  5.             try, p; _) ]* G2 ~0 f# X9 }& f: a3 Y! d- g
  6.             {
    / ^* r8 h9 J8 Y+ r9 |* _: `  W
  7.                 string strhtml = soso.getHtml(url, "", true);
    7 |, j& R* B+ e
  8.                 if (strhtml != "error")
    ( K3 V- Y& m3 z( k4 x7 ^
  9.                 {* P3 e& |8 q5 n6 H5 h
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");9 X" h6 J5 u4 @
  11.                     MatchCollection mc = reg.Matches(strhtml);6 C9 i4 ^  [6 G( E8 ?% r
  12.                     foreach (Match m in mc)
    3 A" K# U- }# a0 T& e( l7 p
  13.                     {
    ! Y; z3 |1 w7 p& y7 v+ h$ Z
  14.                         Uri uri = new Uri(url);; K7 y9 P7 o1 H' l
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);1 X0 E! {* C0 l/ s
  16.                         string fullUrl = "";7 z8 c5 E# ], `- X* i9 s$ m
  17.                         if (m.Groups["url"].Value.StartsWith("http"))& K% y5 y) f, M+ t6 Q2 V/ I
  18.                         {0 N! J. }4 b4 g' {/ T+ S
  19.                             fullUrl = m.Groups["url"].Value;6 I) B) F1 [  a. h3 K
  20.                         }
    : D8 ]8 b: I- u  T
  21.                         else) l& X; J( P  U# t# W: P$ d
  22.                         {8 a5 o9 ]* m( z! D- I
  23.                             fullUrl = thisUri.ToString();
    . X! v. `5 W+ o2 ]/ v  B' r
  24.                         }' N+ x5 m& A- ?$ O
  25.                         allHref.Add(fullUrl);! x- W+ }3 Z* V
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);; N3 j) V. w2 V% s; C6 J- \! P9 s% U6 |' U
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);8 V6 O0 a" r  p4 I: g4 M6 Y
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    $ F5 h6 _* h+ F6 y7 H* K! `
  29.                         //Console.WriteLine("…………………………………………");2 ]. ~, M$ \8 [* J: Z. e* e& p& x
  30.                     }8 K0 X) u2 s0 k- b6 N
  31.                 }
    4 Q$ B. a3 t: d2 b
  32.             }
    & ?# _8 g! P# i1 m0 A, J
  33.             catch (Exception ex)
    ) M; N+ w# W7 Z' g+ R7 E
  34.             { }
    ! L  S3 j' w2 J! |0 @: H
  35.             return allHref;
    % {. W+ I' w6 D" U" J
  36.         }
    # L! E9 W- [5 z2 u& P9 B
  37.         #endregion
复制代码
! K5 R2 }8 k6 Q
' x: \  O5 E$ }! ]; A' g
  1. / h- v4 @9 L$ n3 F" N! R# Q
  2. 3 s9 f) X5 e# f8 n/ k8 @5 n) e

  3. 1 m# E3 M3 t5 ]( v+ _+ b
  4. #region 数据去重
    8 w! K) e' i: C/ D
  5.         /// <summary>6 o. `. C. i  j+ x
  6.         /// List<string>去重! z2 J2 E3 O. n; |' @4 q5 Z" K
  7.         /// </summary>' i& m! l; f% h" f6 b! i6 N
  8.         /// <param name="list"></param>/ E  R, p, S. {/ o+ |- _! U3 A& u( w
  9.         /// <returns></returns>
    : C5 K: E. [5 {9 v) B+ J
  10.         public static List<string> getUnqueList(List<string> list)9 x( F% I' D* t8 o! B
  11.         {
    ) j8 B' h( I7 ], i: r: p
  12.             List<string> list1 = new List<string>();
    2 B* q$ ~' z/ B" b$ ?% H
  13.             Hashtable hash = new Hashtable();0 T; |5 T" L5 v% L2 H9 W
  14.             foreach (string s in list)- E: Z! c$ }3 d: L
  15.             {" Q$ ~9 n# {+ z8 a* N
  16.                 if (!hash.ContainsKey(s))
    + u* \0 [) ?5 k0 _
  17.                 {1 R" Y2 |) ], q! M; L4 s
  18.                     hash.Add(s, s);
    4 W7 k- x( E) O, P+ Q8 b
  19.                     list1.Add(s);. z" ~, `  Y7 N# U
  20.                 }  L$ I3 @+ W# f" T3 k
  21.             }
    - ~% k$ Y4 H5 @; U: t
  22.             hash.Clear();- l( C) P% B" s* I9 e
  23.             hash = null;- o% e' s  k$ X4 l
  24.             return list1;# ^5 |8 Z+ Y% |" \' Y
  25.         }
    1 S' {' Q5 j. k" O4 g2 a- T$ V
  26.         #endregion
复制代码
% S( M& {; t% c3 x: i" S& @/ _
0 H$ N8 j1 ?% X, ]" p$ V

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
. q# Z4 S7 Z7 ]) h
十分感谢!!!非常感谢!!

点评

缺少一个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
$ n) {! n' S1 K0 e+ i4 _十分感谢!!!非常感谢!!

: s. p2 v2 k$ n; Q, Y. r缺少一个gethtml,用下面这个:1 j( K8 B! I( r# J9 A; L! R/ s
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    4 a7 w, G: O8 l8 ~6 J
  2.         {
    - o; c7 r! }' @- U
  3.             string strWebData = "error";
    8 b) s- F1 c1 t- I; E6 \5 V* S5 W
  4.             try+ k$ H1 y$ ^# x% |' T
  5.             {% O4 @0 w$ e& F; t' e
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 0 B/ s: g. K1 {; T) N
  7.                 // 需要注意的:
    6 x$ f6 {# C( w4 ~2 `
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 + E$ T5 A% T; ^' ^/ f( k4 j
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 5 `; x# e/ u+ n& Q: |
  10.                 // webclient.Headers.Add("Cookie", cookie);
    + L" o5 ]' y# ^. {) ]3 }7 I
  11.                 //这样可能需要一些重载方法。根据需要写就可以了$ i7 b$ J3 y" u/ k4 r0 V0 r. s7 c
  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)");
    : ]) F0 J2 n5 y1 t
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    7 w  |0 [9 l# }
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ( ?. K( ~4 x" u0 \4 H
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;$ [7 R( R! t. G
  16.                 //如果服务器要验证用户名,密码
    ' F/ [( A0 c9 w/ n: W
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    6 r2 F* ?9 }( L( I* o3 N; B
  18.                 //myWebClient.Credentials = mycred;
    7 k! n9 h) T" P6 Q# H
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) & v( [! ~: B% f$ L( F$ R3 w
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);$ r1 n( v; E# m0 u( ]% Z1 U4 g
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);/ s; P- x4 r, O. N8 \: ~2 a

  22. 8 R# [  U0 {1 B. _3 A
  23.                 //获取网页字符编码描述信息 % K5 I4 ?6 e3 w; q) J. U! m* R1 ]
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);; m0 {9 z: U; M0 z% E% E
  25.                 string webCharSet = charSetMatch.Groups[2].Value;$ t; J! i$ L/ c0 N2 I
  26.                 if (charSet == null || charSet == "")( F& P$ A/ C# r. k
  27.                     charSet = webCharSet;) q' K( V$ [5 X4 ~9 f  n
  28.                 if (charSet.Length > 0)
    7 t3 l3 {9 t1 Z" s  }% N
  29.                 {. }& j& }* y. T( s! [' l
  30.                     charSet = charSet.Replace(""", "");
    / T& ^; w/ O, ^' O6 Y  t0 f0 ]! D0 x0 ^
  31.                 }/ U# }" n$ M( S+ H) _' m
  32.                 if (UseUTF8CharSet)" i4 ]) s- T/ ?2 E$ p5 N
  33.                 {% [* }$ C0 y4 H8 c
  34.                     if (charSet == null || charSet.Length == 0)
    . K+ |6 o( G3 I! o7 p/ b( i9 y' @
  35.                     {9 l6 K! X: g5 y* c1 E
  36.                         charSet = "utf-8";
    7 h  O4 l5 ?2 @8 {* q
  37.                     }
    ! c7 K, {, N$ I8 m( d
  38.                 }
    / s6 |% J. H" H: ]
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    / r3 l# j  [, b5 D
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    0 v/ j8 {) O- `' d+ f0 ~" c

  41. , d6 U4 v& L. q" J+ ]
  42.             }
    9 i$ ^! j9 I# _) z# L) I( f
  43.             catch (Exception)* [& A# x" S; ]8 P3 Y# G
  44.             {, C4 z1 B2 ]: u. c5 |6 k4 T' t3 E. v
  45.                 strWebData = "error";. G) W6 P1 O  U5 O
  46.             }! f) n  g9 h) e5 v0 l; F2 I

  47. 5 R6 X6 U. W/ D
  48.             return strWebData;: y4 N2 H& U* F* z4 _9 _* G
  49.         }
复制代码
) @6 Z2 c3 n2 f& x8 s* v

7 C  n! f$ |) Q
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-25 22:55 , Processed in 0.051604 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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