AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
⚡️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, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9964|回复: 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 抓取全站链接
    # W* {9 ^; S) b: J0 G7 A# D% y  Q
  2.         public static List<string> GetAllHref(string url)
    8 \& d, w7 `2 M+ m
  3.         {
    9 A5 Q4 R3 T' U! B: `9 e7 |5 l
  4.             List<string> allHref = new List<string>();0 s( [( x7 S7 c4 l$ r2 ~
  5.             try' \3 i, a  A) d! ?7 A6 P
  6.             {
    7 i) J6 p% W0 g" x5 |4 b
  7.                 string strhtml = soso.getHtml(url, "", true);( g% c' P: Q, r! v  g
  8.                 if (strhtml != "error")
    7 v# V: Z# O- N
  9.                 {1 p( M  U! y. m0 _' K
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    # ~1 E: f: d. c6 d' R/ d2 ?* i
  11.                     MatchCollection mc = reg.Matches(strhtml);( H( t: N9 H  `: F( ~
  12.                     foreach (Match m in mc)
    9 M- |9 ?9 P1 R; T& ]* r
  13.                     {
    % u8 r7 b" i: ~; t4 K
  14.                         Uri uri = new Uri(url);9 k2 D1 @6 c+ d: y
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);* L3 a  H+ f7 i9 @5 i* |3 M
  16.                         string fullUrl = "";6 o5 X5 a, t# p. ~
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    5 N% H/ z. k2 U' g2 Y
  18.                         {
    3 x6 v% Y! h8 c# k$ u8 n2 X% \# b% p- I
  19.                             fullUrl = m.Groups["url"].Value;7 P; \6 W. c: b
  20.                         }8 B: [9 a: M2 z) w) @. s& v$ w
  21.                         else
    % b  ~7 d% S/ y5 B7 `7 P
  22.                         {
    : L9 W. w7 l$ u: N, o6 A
  23.                             fullUrl = thisUri.ToString();
    ' y+ r) @5 Z: m9 B; A
  24.                         }
    4 Q. Y  ?- v, `7 a) t3 T  _1 [- U
  25.                         allHref.Add(fullUrl);
    - a6 R' m5 |9 `, B- Q% o6 a, z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    & o* X" I) T3 w+ h* e7 M) O0 l
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);. A! x2 \' v) P# t) k* c
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    . _, D6 d/ }+ K  z% N+ o" o. W
  29.                         //Console.WriteLine("…………………………………………");  [6 B9 ~7 ^9 v, V5 U! R
  30.                     }" a3 E: ~1 e$ r7 @" \% z2 v
  31.                 }, e! ~8 j' Q) u
  32.             }
    # Z5 |# ^2 U- D2 H6 t5 V1 Z
  33.             catch (Exception ex)
    % ^' |, W8 ^, R3 o5 r
  34.             { }
    ) o9 F; A" ^, K" M. T/ U3 `2 y. K
  35.             return allHref;
    5 b  o( k$ u% r" |) n) T4 V
  36.         }3 z$ {% ]6 L3 E3 Q# Y
  37.         #endregion
复制代码
- F7 e5 t8 L+ ]/ \* z

: X' Y( Y$ x5 m5 x5 R

  1. ' T) Q) G# K! M
  2. : ~! I4 b: l1 V  \
  3. : l, y& M+ M1 B7 g; T2 ~1 y( }
  4. #region 数据去重
      A6 U! g4 {- Y+ o3 D7 T
  5.         /// <summary>
    / I* l6 B8 J- |- R; a3 A/ q6 R
  6.         /// List<string>去重5 w: h9 Q; T5 ^5 l1 @+ }
  7.         /// </summary>& f5 E8 i3 {2 ^3 u# `: O$ @
  8.         /// <param name="list"></param>
    # j6 n$ c( n$ H& z
  9.         /// <returns></returns>3 K# W& @* d( D/ A5 w/ L$ h
  10.         public static List<string> getUnqueList(List<string> list)
    1 {: `  G3 ], E  q" Q
  11.         {
    - W/ ^% c: Y0 U: k+ [- L; n, P7 t
  12.             List<string> list1 = new List<string>();, {: ~! s" \1 {7 |- W9 L' ~
  13.             Hashtable hash = new Hashtable();5 J- Q, X( P) ?9 t" B5 U3 ?
  14.             foreach (string s in list)
    5 H& I" w2 }7 N0 s$ R
  15.             {6 L1 F1 z5 R9 _8 ~' m- b2 o
  16.                 if (!hash.ContainsKey(s))
    5 `- h! X0 K2 h/ \' K
  17.                 {
    4 w# x: `  R9 ^4 X& z  V
  18.                     hash.Add(s, s);7 F( o' p! b! U0 M" F' ?/ a
  19.                     list1.Add(s);6 c/ o, m$ y, J5 ^& q
  20.                 }( m3 x( i9 `: L* b
  21.             }7 c/ b6 l$ T' {1 S1 u4 O, A
  22.             hash.Clear();0 t2 E: i9 x+ v4 D
  23.             hash = null;
    * n7 l: ~* s: ~' \! w$ j  X
  24.             return list1;
    . i" U" E# [* n0 @& J
  25.         }/ d9 y+ P. J0 u  x0 n/ ]
  26.         #endregion
复制代码

- {, ^: p& F( \( _8 @2 L' S- n7 C4 L6 t+ y* r# c) h

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

5 a- J, R$ Z8 U# N" t5 B' 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:20
& x, ~& e) K, b: [$ O; D' E十分感谢!!!非常感谢!!

" I$ {: A& d3 u缺少一个gethtml,用下面这个:
7 N; H* ~& w% I  F- L
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    5 [8 d/ S6 \! E& o: {7 k. h4 e& K
  2.         {$ [, {& k2 c& p" P+ q  _
  3.             string strWebData = "error";) C+ q7 \1 q3 |2 P# U
  4.             try
    ' f* K1 r  l; r3 }& ~) K# B
  5.             {
    - m6 J3 d0 w' B$ e3 t
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    7 X4 T$ y1 E* E
  7.                 // 需要注意的:
    / L6 M1 }3 L" L6 A' M
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    8 }0 l6 B6 u) z/ v: S$ G1 Z
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    3 i  S/ I, q* z0 [" |; F
  10.                 // webclient.Headers.Add("Cookie", cookie);
    * t- W7 I% q" a: p8 [
  11.                 //这样可能需要一些重载方法。根据需要写就可以了2 R0 w7 h4 P3 I9 _8 g2 C( Y: `  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)");
    # K) K5 R% S, f8 u, ?2 t
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    . x. P" Y5 f" y
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    3 v0 Z6 W# e" @3 C
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    8 M- j! J2 d% @# B0 [4 T
  16.                 //如果服务器要验证用户名,密码
    - A  s+ U8 }6 @% D7 l. h' f) r) M% ~
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ( w  S* k- E* Z
  18.                 //myWebClient.Credentials = mycred;
    6 ^5 R' m" `( \, J
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 0 F  p& j" q4 o4 E
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ' l( Y: c  O' |* c/ P
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    + ]( Y/ `- Q: F0 m/ a' I  d

  22. " J! ]3 |4 i4 t; J
  23.                 //获取网页字符编码描述信息
      d) ~: v' [4 j/ s" [3 o
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    1 |6 B: o! q8 e8 O4 x, A. }  Z
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ; \9 |0 w" U( w# e& V- \$ E$ x
  26.                 if (charSet == null || charSet == "")
    0 r. |  u/ Z3 T1 _/ g
  27.                     charSet = webCharSet;
    ) J9 U0 J2 M5 _
  28.                 if (charSet.Length > 0)
    ! u* I* C8 Y& {* ]+ Q" i
  29.                 {
    & Y0 U& r& S. r6 V
  30.                     charSet = charSet.Replace(""", "");
    " j( s7 a+ H% t6 F. |% ]4 ?( Z
  31.                 }
    3 Y9 E$ m6 O# F7 O+ \3 H
  32.                 if (UseUTF8CharSet)1 N  i# b+ J7 L; j4 m
  33.                 {
    ; E9 _& b$ Y0 f) ^/ ~$ {
  34.                     if (charSet == null || charSet.Length == 0)
      `# o, E) Z6 _
  35.                     {
    0 o; ~$ X2 ?( y
  36.                         charSet = "utf-8";
    1 U7 b3 ]2 T0 w% A4 R
  37.                     }  v5 O% e$ l! ^1 z! @, b. z
  38.                 }$ S5 ]. X4 C% n' J, n
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default). F) n( L( m; x
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);& d6 F# W' V  Y8 Y& F

  41. " l# e, ^! r* W1 I$ p
  42.             }$ z9 @9 n, @$ n7 H3 N
  43.             catch (Exception)4 s% k  Z" i! j7 k
  44.             {  [- _$ ^' {6 A" {5 m6 _
  45.                 strWebData = "error";
    1 ]5 @# W- V3 ], u1 f
  46.             }
    ! _, ]; @; y3 Z5 j; Y

  47. : ?" A" d4 i% F+ P
  48.             return strWebData;
    , n2 x- _0 }( {) R& S: O
  49.         }
复制代码

& \3 f, Z3 s9 @6 v; q3 u& d- q7 @: x2 O
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-16 05:49 , Processed in 0.052005 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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