找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPTK加白户/二解户/FB海外户/GG老户海外CL企业户源头
最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审GG,FB,TK, 欧美源头, 欢迎合作❤️FB企业户海外户,授信户,TK加白户
联盟收款/海外资金下发/服贸结汇⚡️Spend.net — 美元卡仅需$0⚡️比特浏览器+云手机 |防关联防封号Facebook截流, 1 次点击 2 次曝光
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10173|回复: 7

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

[复制链接]

36

主题

213

广告币

297

积分

初级会员

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接$ d2 _' e4 S6 l* u- P4 h
  2.         public static List<string> GetAllHref(string url)
    : d- d6 K! i. e5 W3 X) y6 `7 s. ?
  3.         {2 b1 p+ B0 _7 F3 a
  4.             List<string> allHref = new List<string>();" i; v' u9 a2 |; n! Z# Y; s- ?+ A
  5.             try
    0 u% B$ i& A3 _  x# A3 W
  6.             {1 l( _! e. t' x
  7.                 string strhtml = soso.getHtml(url, "", true);  Z+ i! B+ W) E" k# ~! h8 U
  8.                 if (strhtml != "error")
    $ P1 E6 u0 P& p, o+ h. Z/ U0 z7 \
  9.                 {$ f: X9 r/ R2 {9 k! _5 ^
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    8 g5 @# C* M: e! D4 F; s7 A9 O8 V
  11.                     MatchCollection mc = reg.Matches(strhtml);9 F" p7 |- X- }) h! v) }& d( s
  12.                     foreach (Match m in mc)# p% v8 t0 {! b( B# `
  13.                     {
    2 |/ T- t, `9 X. ]& N7 b, S
  14.                         Uri uri = new Uri(url);$ ?  @$ c: m: u' Y2 p8 r
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ! @( d) v" v' c- @$ A' S. A
  16.                         string fullUrl = "";
    / O% t6 d& V" t( l$ U  o
  17.                         if (m.Groups["url"].Value.StartsWith("http"))3 f1 N# O0 J4 M- h" A
  18.                         {) `! k1 N3 p  @" r5 [4 w$ W
  19.                             fullUrl = m.Groups["url"].Value;2 g% e+ j4 l7 W* l8 D5 _
  20.                         }
    7 H; a6 z; U: X2 m7 Z$ k
  21.                         else
    * T5 q/ B: ~: g- z/ L- @
  22.                         {
    / Y/ P5 ?1 ^' e9 q8 K/ z
  23.                             fullUrl = thisUri.ToString();
    4 t/ X% _: d) z! D2 {2 N4 h
  24.                         }
    0 R  f5 |' Q: a. Q* T: @
  25.                         allHref.Add(fullUrl);5 z1 D0 D* p5 w/ q* q
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);# n2 e. Y9 O& T: k# B( M( p/ q
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    * O- v% C( H; {( c+ `
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    " p' w$ \3 H$ v: P- T: g' |5 R
  29.                         //Console.WriteLine("…………………………………………");% l3 m5 E/ ?3 U% \8 {) B7 E
  30.                     }& l+ k* S% b/ o8 P7 q6 w3 n
  31.                 }: k1 y; |# a9 Z
  32.             }
    % X+ w; \9 T  }% r! p! Y
  33.             catch (Exception ex). B5 Y/ r. C7 C+ ]
  34.             { }1 _; G& o8 r7 Y
  35.             return allHref;
    % p" ~% r% x7 y1 H
  36.         }
    . B" I7 E3 L" D4 w- S* X) u5 b0 X
  37.         #endregion
复制代码
* D, x3 u# c! J2 U- d1 c# g  q( I
+ v7 R" ?, K: O

  1. 6 h1 i5 V/ y0 v0 t$ ]$ ]
  2. # r9 {) R" V& {! \0 r0 k) a1 c+ ]
  3. ; O! _, o2 T* B$ [2 j! k* G
  4. #region 数据去重$ b, G# ~$ g5 G7 K, E7 s
  5.         /// <summary>+ ^% G  S3 [% S% l5 Q" z
  6.         /// List<string>去重
    ' W2 {% h5 D2 Z4 I9 t
  7.         /// </summary>
    + F/ X! T8 x* y' H! |+ T
  8.         /// <param name="list"></param>$ j( k! c# L6 w+ p+ f2 a; `
  9.         /// <returns></returns>
      g+ S7 G5 @9 I$ u4 X9 N# n) k
  10.         public static List<string> getUnqueList(List<string> list)
    0 C# B2 r5 Y* z: V
  11.         {
    4 k6 F8 F- J9 v1 v6 d
  12.             List<string> list1 = new List<string>();
    & T0 L* @& {3 M! y+ Y9 a  I
  13.             Hashtable hash = new Hashtable();
    $ u! z& ^1 B% E- f/ W/ M
  14.             foreach (string s in list)
    + r9 ~4 f/ F1 V9 g* M+ t
  15.             {; d  v$ F* |6 v6 Z8 k8 i
  16.                 if (!hash.ContainsKey(s))
    3 N3 _6 d( z! t
  17.                 {
    2 i' Y8 K1 s( F( [
  18.                     hash.Add(s, s);4 o6 d( f2 _' J$ a
  19.                     list1.Add(s);, U, J8 v5 @3 A6 }: u, T( g5 x
  20.                 }# g4 {  s2 I8 p7 W
  21.             }
    % e. I$ B$ k! K* w8 u
  22.             hash.Clear();
    . ]3 _6 u; D: @# ^! R
  23.             hash = null;
    - x. t' a! f" X. t5 |% j
  24.             return list1;3 E, D+ V( ?8 ?
  25.         }
    ! h$ p6 }- k5 h# A/ S; r: W( w$ L
  26.         #endregion
复制代码
$ B7 E+ @8 v% n6 A. v

4 r0 A8 J8 M6 r8 @* w% T$ N4 S' G( h  c

点评

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

使用道具 举报

36

主题

213

广告币

297

积分

初级会员

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

1 L. s/ _: }7 M+ v) F" B4 S8 e十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
( ]" _2 I9 c3 |' r7 A) y十分感谢!!!非常感谢!!
7 o; W: {* `2 k  k
缺少一个gethtml,用下面这个:4 ?; h3 Q- k4 v$ j- c% r+ K: n
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    % ~, f, g2 D1 ]0 a
  2.         {7 u  X% V  O9 n
  3.             string strWebData = "error";2 m0 ~/ e; E- @9 E9 ^$ \
  4.             try
    ( Y! h  A+ e% U" C0 p
  5.             {
    2 L4 L8 P. y5 Q# _' ?* Y' x
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient " V# E7 S) I* Z  X6 v9 L2 f
  7.                 // 需要注意的: - H, z2 T$ m2 x% F  V- X# ?! x  w  |
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    3 L) T: i" _5 v' K( e% s0 ~3 V1 W
  9.                 //这是就要具体问题具体分析比如在头部加入cookie # E, y: ~' }6 d6 x( k3 Z  h
  10.                 // webclient.Headers.Add("Cookie", cookie); % d+ _: K# v" R7 t/ M
  11.                 //这样可能需要一些重载方法。根据需要写就可以了5 n# E5 Q- ?: p: A5 [
  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)");
    0 s6 {  }! B5 g3 H$ n# w$ v
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");$ l6 B" N3 v5 k* g, @
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 5 `' b+ `/ G! N5 @& L
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ' @2 J, N0 |) P& m, \
  16.                 //如果服务器要验证用户名,密码 5 H; q! n1 S' G' F0 i; _% u
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 1 Z& J: p7 L% o: H
  18.                 //myWebClient.Credentials = mycred;
    0 y$ W6 Z! C/ R$ V* p0 r/ G
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ' O3 D8 ~& P0 P' x
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);9 \8 D# |' B$ c8 \, n; ^  _
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
      T9 r! c, ]! k
  22. 0 ?6 L/ O7 O2 F9 }  O0 ~
  23.                 //获取网页字符编码描述信息 9 z2 W3 j5 Q: a: i# B/ ~
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);5 i0 o4 B0 q( z4 c- Q& x
  25.                 string webCharSet = charSetMatch.Groups[2].Value;) _2 n: P$ a; v
  26.                 if (charSet == null || charSet == "")
    9 x' Q4 _8 e3 }
  27.                     charSet = webCharSet;
    $ J$ U3 j" H2 z& O9 t% p$ w4 g8 Y
  28.                 if (charSet.Length > 0)
    5 ^4 u4 ~) n# k) X, W
  29.                 {/ c* `0 _, F" X6 o7 t1 Z
  30.                     charSet = charSet.Replace(""", "");
    7 B9 I# i' S. r7 f. l
  31.                 }; b3 y% w" N, g! T% G& q
  32.                 if (UseUTF8CharSet)) M* I* o& L" k, ^/ T, B
  33.                 {
    / L9 m# F0 M+ ]# u, x0 X
  34.                     if (charSet == null || charSet.Length == 0)/ C- F0 ?) Z6 |) j/ H
  35.                     {
    9 D, u9 z" e, K. ~8 K2 Y1 y
  36.                         charSet = "utf-8";
    0 p( o* i$ [% R  m
  37.                     }
    8 P/ y: a0 F! m8 }# ?
  38.                 }. H: ^5 Z, O# `4 X& E6 N- v
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    3 @) y- m" A! O
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    : [* ^4 b, }4 W
  41. ) o/ ?9 x* W2 m$ T3 {" L. B. D
  42.             }
    # [+ n4 G9 Q+ j+ L8 R/ j5 T
  43.             catch (Exception)* p( S- q& f9 p0 M; h
  44.             {4 Y) u2 J, F( G2 Z! l
  45.                 strWebData = "error";
      r! E7 Z: E2 m3 N/ U
  46.             }
    2 Q4 M$ {8 f& I& E" `. e8 \6 [

  47. 2 q/ e: {; l# f4 X8 |
  48.             return strWebData;
    9 J( T" B: ]1 D( w. J2 I) h: _5 \$ m& Y0 ^
  49.         }
复制代码

9 W9 \) @  ?" c) P7 V  s3 d& o  `
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-25 21:07 , Processed in 0.069610 second(s), 27 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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