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代理各种主页、账单户、BM户(优势)
⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户海外CL企业户源头
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量FB稳定代理/住宅IP/ADV50打五折
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区跨境债务催收/风险代理
高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9869|回复: 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 抓取全站链接
    3 G' b1 D0 s3 O: Q7 l
  2.         public static List<string> GetAllHref(string url)
    # Q- U$ N' |6 z: ~  f
  3.         {
    2 O# r2 ]4 Y* u  K! @5 x
  4.             List<string> allHref = new List<string>();
    0 @6 t8 L2 |. U1 g. S# N. B5 u
  5.             try3 h" L- d, N5 `+ L& e7 {; [! Z
  6.             {( [5 |6 M, W" A* Q' }3 @+ ?: S
  7.                 string strhtml = soso.getHtml(url, "", true);% Z. ?$ `% G* G  Y' p: D. B# @; x
  8.                 if (strhtml != "error")8 F1 I: {) c# \& q3 @
  9.                 {5 \3 K2 r% {+ u7 ^4 n! Z
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
      Z( h' K( M4 U( q  W! ]9 `
  11.                     MatchCollection mc = reg.Matches(strhtml);* v+ _/ k5 m* m# }
  12.                     foreach (Match m in mc)- E9 v* q$ p. Y+ U/ I$ Q5 `( d
  13.                     {
    / s0 S. _" U3 \: e1 `; n0 n
  14.                         Uri uri = new Uri(url);9 b' x: r4 f" @& q
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ' O! k- g7 i, p& \# |4 i
  16.                         string fullUrl = "";
    0 V' b4 {0 Q, p$ Q  D2 _
  17.                         if (m.Groups["url"].Value.StartsWith("http")). C9 j& W! v6 _  i2 h3 j0 y
  18.                         {
    $ ]1 |( g5 e  a* m8 r* t
  19.                             fullUrl = m.Groups["url"].Value;
    5 ]! z9 D: {' q' Q# h
  20.                         }
    % v1 a: U! J! q+ U* h  {1 c
  21.                         else
    6 Z, p* M' u- o* c  z. x! h' A9 m1 e' w
  22.                         {9 u( D4 W  s4 z9 y4 p
  23.                             fullUrl = thisUri.ToString();( E  R' G- p* w
  24.                         }
    5 k6 u- j, y" W- f# F* s; [1 {+ K
  25.                         allHref.Add(fullUrl);1 F0 Q2 k" T# l/ h, k& G8 |
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    + |$ l5 s- P! H1 n3 i! `% m9 [
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    . G1 E2 u( i+ k
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    6 q# Q" |1 U' ^( _' y& i- ~
  29.                         //Console.WriteLine("…………………………………………");+ L7 U) Y! \4 Y9 O; o3 q
  30.                     }7 ]) ]' \( u) X4 s% I
  31.                 }
    3 d/ t: s% i6 j) f" J  D
  32.             }
      g, U$ N, x1 I: a0 |% |
  33.             catch (Exception ex)
    * E3 l9 v. U4 @2 R. v  a. ?
  34.             { }* E+ |  X" G; x( z3 R1 g/ A
  35.             return allHref;
    2 ]% |4 J& l/ X5 w& N4 c$ \
  36.         }- ~9 i7 K+ [7 p! b5 X
  37.         #endregion
复制代码
. T' N* A$ E& p6 F0 h
, r$ w4 b. d, {% z9 }# h* Q0 f

  1. ( b1 X. U1 z5 ~
  2. ! Z/ x: i+ h$ x' p5 R/ o% @/ R
  3. : k- w7 j$ r+ V5 R9 t
  4. #region 数据去重2 Q. }" l# P" L4 u1 [9 h- U
  5.         /// <summary>9 a4 t; a6 \, m/ D
  6.         /// List<string>去重2 T$ ~9 O* |5 A# }7 `
  7.         /// </summary>7 _# M8 i$ |4 G+ @9 L
  8.         /// <param name="list"></param>
    ' Z) [5 j$ R) q$ b5 X, t4 P
  9.         /// <returns></returns>
    8 X2 P/ U# l- z5 Q9 `
  10.         public static List<string> getUnqueList(List<string> list)  L6 e. [( h+ C  e
  11.         {( s! P/ _. m7 r) `
  12.             List<string> list1 = new List<string>();1 P. j" H2 \" b' E
  13.             Hashtable hash = new Hashtable();
    % a. K- X, A: r2 V7 ^% u! P
  14.             foreach (string s in list)
    7 \( D+ O) `+ W/ L4 H1 A
  15.             {
    / r" U8 J$ i0 ~% u! _) K
  16.                 if (!hash.ContainsKey(s))
    0 m7 X5 ^& S  l: _' [+ V% l4 R/ e( [
  17.                 {
    ! F% w7 X7 [8 |% W
  18.                     hash.Add(s, s);" e% W  D& M! v- x& ^1 V+ d
  19.                     list1.Add(s);& L8 P% h3 @0 Z) e1 f+ ?  h
  20.                 }" U: \* A! i4 s4 o: V9 ?
  21.             }# P6 u, I, p+ Q$ z. l) H9 P$ O, K
  22.             hash.Clear();
    : F' O3 b4 z; V
  23.             hash = null;
    ( n+ k! n- l6 ]6 n- M6 K2 S* \' z
  24.             return list1;+ E$ B7 ?* I: I
  25.         }
    + A6 J' p: i6 Y
  26.         #endregion
复制代码

/ d( x$ ^* O- u
! @  G* C+ E& p$ O" p

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
; o  n. k! p! y) \
十分感谢!!!非常感谢!!

点评

缺少一个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% U: v" E. S% h' w( R  r6 d) g4 `
十分感谢!!!非常感谢!!

- L8 Q% Y5 e8 x7 h( a" A3 z% R缺少一个gethtml,用下面这个:
( A+ i6 C$ u7 M
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    / _6 n$ @) w: z% ]
  2.         {! Z8 E' p7 Y2 y9 r) ^& \! `' J
  3.             string strWebData = "error";
    ( _. O) B1 F2 L- W& l, F
  4.             try
    ' v' I5 s1 S! J+ r0 J
  5.             {( p  ]. ]5 ?9 M6 o, B- N
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    # \- r6 L# s% i" F1 P
  7.                 // 需要注意的: - Q( D% f1 M! o- `; x3 I5 F  N7 G/ y
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 - F! d7 [& E4 @+ z. b+ _
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 4 D* C5 b2 J0 ?: V  {; @  S
  10.                 // webclient.Headers.Add("Cookie", cookie);
    9 S- n3 p# C9 U- l5 c' P2 N& w! ]
  11.                 //这样可能需要一些重载方法。根据需要写就可以了8 {0 A, f' Q2 C& N% D+ T
  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)");# l7 ?5 |3 z6 q, N
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    % N% g5 K8 D# p
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    % ?7 a0 T; D/ a& s
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;- _1 `# `; h: W! d6 _* F8 j
  16.                 //如果服务器要验证用户名,密码 1 a8 i1 R2 k& W' ~: u
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ; D8 W- R" S( M- X8 d
  18.                 //myWebClient.Credentials = mycred; 3 I- h. q* @4 J
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ( c0 Y5 U: |- `; w& L6 T: a3 f
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);7 k3 r+ c0 y4 |; M% n  f) D
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    2 }7 f1 ^; G2 {% b
  22. 7 V7 G2 T4 i3 g5 p
  23.                 //获取网页字符编码描述信息   H  R* v6 m: V6 d: H+ i
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    ' g8 m+ g5 {( l5 l
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    2 _7 S1 s9 T- A9 F* L( I% a- M
  26.                 if (charSet == null || charSet == "")
    2 d9 L8 W$ x% e( f  m) G  w, {
  27.                     charSet = webCharSet;
    1 q1 J& Q% N/ M& d4 q  V. G3 x$ O
  28.                 if (charSet.Length > 0)$ ?- z8 N+ ?) N1 B8 V  I6 I
  29.                 {  W  V) I; Z7 ]0 e
  30.                     charSet = charSet.Replace(""", "");" _8 |# x. a, @& S3 y- U
  31.                 }: Z" P/ ~& _1 T3 P+ }! y
  32.                 if (UseUTF8CharSet)6 u; g' |  B8 q2 E: J
  33.                 {# W( h* N6 ^8 u
  34.                     if (charSet == null || charSet.Length == 0)0 ?/ k# j+ ?, c7 v
  35.                     {  s& d" |7 {- ]- J* h: P2 x1 z
  36.                         charSet = "utf-8";4 Y2 @8 o& r9 E' f' l  _
  37.                     }9 U; o( _. ]. S0 s3 a! ]
  38.                 }
    ( ^7 a, y' o( m; ?( u
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    5 E' ^2 L) x8 s, z
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ( z. z# R9 Q2 s

  41. $ e9 J! P4 I7 z, @. i2 f
  42.             }
    5 [2 a) {% v3 L2 U) c9 U  Z
  43.             catch (Exception)
    * O& x- h: O+ t9 v) e' Y  E
  44.             {) M* \5 t" |' k. b) ]* @% I8 b
  45.                 strWebData = "error";
    ! h9 R. N4 N. v% R' C
  46.             }' s/ H. w( c6 g% L- g0 j8 d

  47. 2 X5 J2 G6 p# q9 ~
  48.             return strWebData;: d/ X7 f! D  _: k
  49.         }
复制代码

" M  W5 k( M  o. X2 m/ _; Y  Z
" \; ~, f8 S2 z) w2 Z2 F: y; u
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-16 12:33 , Processed in 0.063778 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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