AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Adsterra China
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡DuoPlus专注打造跨境电商云手机BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户Google、Bing官方总代  联盟流量开户FB资源,账单户,分享户,国内一手
FB企业户BM户账单户源头海外CL企业户源头PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心
虚拟卡 - Pay2.House【找量】BA独家Nutra单找量广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9495|回复: 7

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

[复制链接]

36

主题

174

广告币

260

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    $ N3 t; [" O0 w! ~  m# M
  2.         public static List<string> GetAllHref(string url)
    ) X; M& ]( E) x4 k" O- f/ g
  3.         {
    " A5 o+ C9 @7 }* E; S+ |
  4.             List<string> allHref = new List<string>();
    " m' v  i6 h7 ]
  5.             try
    5 s4 c! }  m4 X( C/ \8 t
  6.             {4 x# D. n+ X) t/ j$ {( f4 Q
  7.                 string strhtml = soso.getHtml(url, "", true);
    * |1 h! e, X6 i. K" J' s/ J, @. W
  8.                 if (strhtml != "error")( j# g, ]  \/ F) p! o+ V$ R
  9.                 {* X  t( Y3 X; b1 I
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");7 q7 _. U6 l7 o0 o( [! L& _
  11.                     MatchCollection mc = reg.Matches(strhtml);
    # u# g- F, r+ q% C! t
  12.                     foreach (Match m in mc)
    ; u& f# \1 c( L$ y6 f8 G# [
  13.                     {
    : u) o- p: O4 c# d2 A
  14.                         Uri uri = new Uri(url);
    6 d( ~$ m' V; M% n
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);/ h$ y( p' E- u+ E
  16.                         string fullUrl = "";
    % O% @' _2 {4 p) ^' \. c
  17.                         if (m.Groups["url"].Value.StartsWith("http"))% y0 v3 H9 G3 l9 e7 k& t* s
  18.                         {5 D1 O) {1 ~5 M
  19.                             fullUrl = m.Groups["url"].Value;, a; k3 w3 n5 D( S' d; P
  20.                         }
    " ^% d6 @7 B2 j: l& [' g# D
  21.                         else
    $ \% L! c$ Y6 e; q7 r% }. A
  22.                         {
    % M" _5 n7 b) S5 {( ?: J) d
  23.                             fullUrl = thisUri.ToString();0 s. v0 i5 t: G0 _; @* J
  24.                         }
    0 a# Z. u4 U0 b1 ?- b' n- |% r
  25.                         allHref.Add(fullUrl);( ]- W: O5 i+ }) M/ x
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ) {8 j/ y7 B4 S1 V
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ; x  |8 F4 {) t) G3 T
  28.                         //Console.WriteLine("补全链接:" + fullUrl);5 W# \4 K' t$ v
  29.                         //Console.WriteLine("…………………………………………");+ w' y5 E' H7 z2 J, h6 l
  30.                     }. b' K' Y: o. e6 U
  31.                 }
    4 p2 z+ U) ]) G. c, v
  32.             }( O5 B" _& a# L8 n8 Y! @8 I
  33.             catch (Exception ex)- k# {% h; U+ `' e" ?, m
  34.             { }5 B0 B/ _* Y5 u4 q8 _
  35.             return allHref;. m+ ~; F+ a. U* p1 W
  36.         }" b/ h& `) o) K2 M  \" R
  37.         #endregion
复制代码

' z, ~+ r" ?0 J5 P; Y6 y/ Z" D
- }0 b- R' u! t( D4 v0 F4 F

  1. 1 P4 g* p8 e* }: O6 r8 _! A! p, \

  2. % n5 U/ e5 ?9 E3 R; v) y
  3. 9 {" T9 `7 q5 Q9 H8 O6 F( z* J
  4. #region 数据去重
    ! x: D% Y' a& X4 H
  5.         /// <summary>* H: v9 R+ J6 Z
  6.         /// List<string>去重
    9 B+ p% W# S5 H( K* I. H
  7.         /// </summary>: b- j/ ]9 h3 Z0 n
  8.         /// <param name="list"></param>1 O0 W! q1 S: s4 ~
  9.         /// <returns></returns>3 j9 F5 O' l( r- k# `; m# z
  10.         public static List<string> getUnqueList(List<string> list)2 @; Y6 J1 I- n" k* k  _; C% e
  11.         {
    ' p; [7 U3 z! {2 u3 I# r' s! x$ \
  12.             List<string> list1 = new List<string>();
    # t+ \  y3 n  z  p, ~2 \
  13.             Hashtable hash = new Hashtable();- ~/ r9 ]- p$ q1 G* E
  14.             foreach (string s in list)
    - O6 @8 ~$ N, ~! T( f) U
  15.             {% `: n  b  ?# N2 }
  16.                 if (!hash.ContainsKey(s))
    7 `1 l, H' z, O2 s  q& g- W% a0 K
  17.                 {% ~6 U8 q, w9 R7 L
  18.                     hash.Add(s, s);" o/ s, n8 a& J
  19.                     list1.Add(s);
    ' g! w0 e9 Z, x( }
  20.                 }1 f: f  c' W+ v8 z/ _! c
  21.             }" g: j" N4 B' Y1 e* O% W* i
  22.             hash.Clear();& r1 J' T, ]6 }: t1 [5 g
  23.             hash = null;5 K4 R/ a# z7 w- _
  24.             return list1;5 B' `5 E6 `, ?
  25.         }
    & P( B% N( }& o1 C: y$ U& ^: Q
  26.         #endregion
复制代码
0 X( ~6 a( S/ @

: G) A  P# n& u

点评

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

使用道具 举报

36

主题

174

广告币

260

积分

初级会员

Rank: 2

积分
260
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
  B3 J4 b& ^8 ?4 i3 C9 O  }8 k) n
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20& g9 [. L- X1 ?1 d5 G( d. \
十分感谢!!!非常感谢!!

* Q2 r! M2 r3 A  Z4 R缺少一个gethtml,用下面这个:
8 c% [* t. m+ o
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 , z/ \' i+ S3 H5 ^$ v% U: s
  2.         {8 S6 Y7 }8 A; h: R8 i  p
  3.             string strWebData = "error";( d" p; C! |8 n
  4.             try1 E% s! {# k8 H9 D' V" h4 r
  5.             {
    6 O5 b/ ~7 N- _$ m/ v
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    1 `4 x5 Y1 A; \4 \" L' U! O8 \( L
  7.                 // 需要注意的:
    # N8 ^) a% M, ?3 r/ W
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 0 l% g6 {' W7 a8 h2 F4 G( H! S8 \
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    : g3 g9 o% Z1 N$ r+ ^
  10.                 // webclient.Headers.Add("Cookie", cookie); 1 D/ \/ L+ `2 L' t+ h
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    8 J3 R+ j& D# d2 {' y- @7 @( X
  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)");/ i) L+ l+ o- S. ?
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");7 g# h1 m  P! Q1 }  A  |! b
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ; g4 {0 K* J) J+ j
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    $ j# w8 x% c) L/ a, t# y8 r2 G
  16.                 //如果服务器要验证用户名,密码 % c8 v0 L1 P8 l8 M. u  i$ X
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    & {% e3 l8 m1 c7 N+ Z7 y) r# @
  18.                 //myWebClient.Credentials = mycred;
    . S1 V. N, L0 \
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    0 |/ H9 q8 C5 c3 Z
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    2 u& X7 t* w! X  Z1 H
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    & n! x; }3 G8 |# o- u$ ^" A

  22. & F6 }$ h1 Q5 U/ Q
  23.                 //获取网页字符编码描述信息 4 I+ T$ J& c& q5 I& t
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);: S) \  l1 ?% ~1 P  Z6 y
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    9 Y# U/ ]3 T' E& G. A) \5 K
  26.                 if (charSet == null || charSet == "")
    4 t. O3 j* D% u* l$ `
  27.                     charSet = webCharSet;; f+ _: e. z1 E: L8 v9 U" k. l/ ~
  28.                 if (charSet.Length > 0)3 {5 z4 t" b- h- A9 t, l4 E5 `# F
  29.                 {
    / w/ F3 O9 x4 Z. e  c# e
  30.                     charSet = charSet.Replace(""", "");
    / p& X% Z& m: m! C( G1 m0 I+ m9 s
  31.                 }
    : @: f% s! q  _6 U! X
  32.                 if (UseUTF8CharSet)
    4 f+ K/ i6 L$ t
  33.                 {% L& M8 F4 W. R1 B! L: x8 F% W) N
  34.                     if (charSet == null || charSet.Length == 0)
    ) ]1 w. |# S' {7 W1 z& k0 |+ t
  35.                     {
    . K+ J; D. l' ]
  36.                         charSet = "utf-8";
    4 A6 q6 b0 A4 ~5 J
  37.                     }9 I7 e2 S( {2 ^" c4 {& x
  38.                 }7 b. i' k+ O5 u2 y
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    * N7 X! [4 x  _/ `! M" K2 O/ ?
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);" w. I# B$ x- t* p- Z

  41. " i0 S# i1 C5 ]4 O4 N  l1 z
  42.             }: e7 O. m  \3 y9 q' ~* U
  43.             catch (Exception)
    - E1 h0 t7 n6 o& T* P! ]* Q
  44.             {( K! l. i% U0 Q/ F6 T4 t! Q1 t0 g
  45.                 strWebData = "error";
    6 W. Y' J/ r" q* B$ A& ^
  46.             }
    3 K6 i$ B, L' z5 s
  47. 1 M# d7 v9 f3 I& n8 c
  48.             return strWebData;  W7 c1 g( w. h1 Y
  49.         }
复制代码

: ?7 n6 o# F# N; J: A  o5 D
0 J' J4 O' C  A. C+ _8 Y) @
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-8 18:32 , Processed in 0.058535 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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