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%,国内持牌机构   
查看: 9498|回复: 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 抓取全站链接
    % ?4 R! [8 |  w: B; O' b  N
  2.         public static List<string> GetAllHref(string url)
    " ~9 |# C, K( F* Q9 Z/ O" O
  3.         {
      u6 l* J% s/ Q5 _! M: L) J
  4.             List<string> allHref = new List<string>();
    ) j5 O9 B$ s: N9 n0 l* n& |" Q
  5.             try
    7 H$ z. v" u' |) Z" O( S$ L  Y6 g
  6.             {
    + _# A& O& @/ P# l# t
  7.                 string strhtml = soso.getHtml(url, "", true);# w% i* F' i/ R' p
  8.                 if (strhtml != "error")
    % s/ Y/ a4 Y: r. @
  9.                 {; q# g* ^* t# f
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");" ?) G/ L1 @- s- M! f3 X' s
  11.                     MatchCollection mc = reg.Matches(strhtml);
    - J( z( Y) i  U" q4 H: ?5 d
  12.                     foreach (Match m in mc)! I& I% `; Y% Y+ k2 h3 _  z
  13.                     {* ^+ a) P) L1 z
  14.                         Uri uri = new Uri(url);
    * C$ g9 U: F9 k
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    4 W% L2 J* {& u' Z+ [" k! ?2 [
  16.                         string fullUrl = "";1 i( o' G# e. ]5 R6 c) [) K
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    6 t+ a: m$ t) ~
  18.                         {
    - z; {3 C$ @, X& L* R! g7 d$ f
  19.                             fullUrl = m.Groups["url"].Value;: w' S- O. z3 m
  20.                         }( @: X; t& A/ s! E  H' S( M
  21.                         else
    % r6 R) \- I) d2 H8 {  ], t
  22.                         {; C% G# N6 e; _- _8 K
  23.                             fullUrl = thisUri.ToString();
    ( F" y, Y& Q# _; Z- m# B. E
  24.                         }
    4 k7 b4 v2 b) D$ q9 C$ s5 j
  25.                         allHref.Add(fullUrl);
    ' `4 ^0 \% ~% ^
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    9 D' _+ C3 r8 \% ?( l0 u# i- d
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);  ~( i1 J' C/ ~
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    6 X. a7 F1 g. P; \. h
  29.                         //Console.WriteLine("…………………………………………");; s" J$ b- H& N4 L4 c
  30.                     }
    0 m; w# ^/ o1 ]/ X/ m/ p+ C! ^
  31.                 }/ D- \9 T) H" _! ]# ]
  32.             }
    4 @6 a2 M6 l3 h2 i% e2 ]9 B4 }: h$ f
  33.             catch (Exception ex)
    . ^* R+ X# _0 H5 p2 s
  34.             { }
    ) h0 C" Y% m1 A& b" w
  35.             return allHref;& @7 d, U% o& j0 F
  36.         }2 _  `3 [' o0 D! O: Z
  37.         #endregion
复制代码

$ B6 I1 `/ Y$ l. \5 f1 ^: l( v) [: o: C2 ?- d* B& `
  1. ! D- r6 _; m) B6 a* G6 U- U

  2. 0 B, H( `0 {, Y1 R8 b6 O

  3. 1 F6 m5 Q) z& j3 B' O
  4. #region 数据去重4 n# k, R3 a5 A+ ?) a  \: a& n0 \
  5.         /// <summary>5 ?! J2 \1 ~, Y9 q" S  Q' H
  6.         /// List<string>去重
    1 e  a4 p! X4 x$ X" N% A
  7.         /// </summary>
    # ]( X) Z1 L) H
  8.         /// <param name="list"></param>
    ( h9 K& l7 U( m" b0 A8 ?
  9.         /// <returns></returns>
    4 G. Q% J. [2 a, p1 i. h
  10.         public static List<string> getUnqueList(List<string> list)6 ^3 K' d! h5 S4 U# J% M
  11.         {
    / h" p8 O4 @$ |$ R- n8 T/ Y! R
  12.             List<string> list1 = new List<string>();
    # _# v5 P; J2 h# M% u' B% o
  13.             Hashtable hash = new Hashtable();
    & z) V+ S, e7 h
  14.             foreach (string s in list)
    9 C: z% {( H9 q  I6 R
  15.             {
    . e( k9 L: I1 R: V* Q
  16.                 if (!hash.ContainsKey(s))! X8 E+ n& a) X# H$ k
  17.                 {
    9 H2 s1 E7 }. ~) P- u6 n+ y
  18.                     hash.Add(s, s);' K# V% _$ u4 A% q- {
  19.                     list1.Add(s);
    " [, ?1 q2 ~, S4 P
  20.                 }
    1 a8 l" y  `4 @
  21.             }6 X9 z# Y3 e2 i9 B
  22.             hash.Clear();
    4 w; \4 j% Y$ p5 l& V2 W# G
  23.             hash = null;
    ; w8 b! U" R$ Q# c, T) t, b' ?% g- ?
  24.             return list1;
    2 {4 X6 z) x, T! p8 U: S& J
  25.         }" k- u7 Q: m7 m- `4 o6 D$ P
  26.         #endregion
复制代码
$ t9 r/ N1 {' o! Z! [# r/ [& c/ W
" T, e+ ~: t( Q

点评

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

使用道具 举报

36

主题

174

广告币

260

积分

初级会员

Rank: 2

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

7 }% }" D  K+ C& L十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:201 e! D1 S. Q: p$ b$ s/ B+ l6 W
十分感谢!!!非常感谢!!
2 x7 @, D4 S( ?4 v" \
缺少一个gethtml,用下面这个:3 V0 `* d5 ?7 X5 y0 q- Y2 A
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
      p. L) H+ o. O; p2 |; Y2 l5 `; Z. g
  2.         {
    1 M1 J" {3 O. ^; n) \
  3.             string strWebData = "error";
    6 Q# v5 C8 _2 v  ]3 f: ~
  4.             try
    ( `( E9 N! ?3 v2 a& A: R
  5.             {
    7 m, n# ]( @1 S; D: `- T/ k
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    9 `' P# L5 R2 n  n5 a
  7.                 // 需要注意的: 5 ^' p/ U8 D7 `" r+ r! J
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 & P: }" Y- G& p8 `* }7 n6 {
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ! [; n8 D. s: }" L- y# {
  10.                 // webclient.Headers.Add("Cookie", cookie);
    " w/ O  t* U4 z9 T
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
      `, {* K7 U8 Y8 o% 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)");
    9 T2 f" B2 V# v4 t" E
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    8 @" P1 E1 I7 a
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    * d+ o2 x+ V7 S3 S' z, L6 j" q$ h* \
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;  X5 V1 z1 a$ G6 v3 m! H
  16.                 //如果服务器要验证用户名,密码 - F' |5 d6 M+ i$ A8 A% G/ E
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    0 z& c" a9 Q& [) a( x
  18.                 //myWebClient.Credentials = mycred; & p. T' \( z% F" N
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    : U& m0 b6 J+ H7 d- a6 t3 V& q' Q
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);# G9 R4 ?. Z7 T6 d# o/ h0 g
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);3 N, ?& _2 ]% l+ u1 E; x% i
  22. ! R! x5 v8 V, n. i2 r2 n2 F
  23.                 //获取网页字符编码描述信息
    " N/ ~8 n" N7 k% n; y
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    # r% G7 P% m: L. s1 n3 E4 b1 y
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
      F0 u3 j* ^0 y! n! w5 l5 h
  26.                 if (charSet == null || charSet == "")
    6 I. [) E7 L0 l% T
  27.                     charSet = webCharSet;% J% @  r$ h2 j$ Y/ ]' b
  28.                 if (charSet.Length > 0)& ^! [; E6 s, `* c6 |5 Z
  29.                 {+ T9 U' u  u7 f/ A! Q9 n
  30.                     charSet = charSet.Replace(""", "");
    : g3 g9 }. \' E" k8 A1 X5 B
  31.                 }
    - C8 O: j8 `& U" Q8 L' x* Y
  32.                 if (UseUTF8CharSet)
    " G& A% J( D5 d
  33.                 {! q7 H5 G" v! B2 h
  34.                     if (charSet == null || charSet.Length == 0)$ y% ~/ Y2 \4 i2 ^
  35.                     {
    8 a5 P( x7 w9 |) f% X
  36.                         charSet = "utf-8";
    3 ]6 K1 f  S4 `" K
  37.                     }
    5 ^. H. b8 E. s& u" r& y
  38.                 }
    3 s4 f0 ^& s7 `1 i6 I1 i
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default): [* B3 ~, J. m
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);: ~4 A- X, B5 |0 ]1 ^

  41.   I* s! j7 K3 W+ d$ p$ Q# M
  42.             }
    1 M1 ~- p/ y, A+ a+ T
  43.             catch (Exception)( b3 v9 N- E" o" S& b; |" J
  44.             {
    ! a1 B$ m" G8 J8 B  X' w' z" t
  45.                 strWebData = "error";* _5 A3 J& Z; Y4 q6 ~) f( I
  46.             }
    ' _" \$ B) R( _% Y' c9 k* k
  47. 8 t) P# J( f5 a; _2 ~1 V
  48.             return strWebData;
    % ~7 s! i" Z6 f0 G
  49.         }
复制代码
- J0 K" n- I% ~) G

( g  Z7 c9 Q  B4 [
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-10 02:13 , Processed in 0.052000 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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