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代理全球虚拟卡, 支持U充值
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9810|回复: 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 抓取全站链接
    # i* I' H$ g' x! t3 r. v% ~
  2.         public static List<string> GetAllHref(string url)
    ) l9 g7 Q: @0 M/ t. T0 G+ R
  3.         {* ]- {8 ?( R7 [7 T, b
  4.             List<string> allHref = new List<string>();
    5 f, t! v8 O7 X' L# a* t+ C
  5.             try6 u8 I: x3 T! f4 c
  6.             {
    . |, V, z  P. q7 U8 Y
  7.                 string strhtml = soso.getHtml(url, "", true);
    , |+ U6 l( E  j( d' M' V+ x2 b* Y: ]
  8.                 if (strhtml != "error")
    $ W: G. W1 k) f) z1 }
  9.                 {
    2 P+ A0 ~- t4 i
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");: w. |/ ~/ M& ?1 ?0 s$ y
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ) W  c5 V; X. F! @; U
  12.                     foreach (Match m in mc)
    & L6 ?7 `8 f' L8 J  [0 T3 S# [
  13.                     {8 I5 r+ o- L4 z& [1 U& y
  14.                         Uri uri = new Uri(url);0 D" J; W) j  y3 T
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    . f2 C) J" t6 F% h% p* Q
  16.                         string fullUrl = "";
    : Y/ m5 w7 D+ G/ N# K3 P
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    * O) Y" A" Z: \8 d3 t$ P7 L( t/ t1 ^
  18.                         {
    7 x' z. j; E% d$ s: Q
  19.                             fullUrl = m.Groups["url"].Value;  g6 D8 P/ z& G
  20.                         }
    3 ~. ]% j" F# @
  21.                         else
    9 [1 G" D. [6 k- f6 }
  22.                         {. s9 G+ u2 N) f( o  g6 }  M3 o8 q
  23.                             fullUrl = thisUri.ToString();
    # @; f" [' L' N9 z: w( {) N0 P
  24.                         }
    & }! Y% h9 j! x: P9 n' U1 E, d* O
  25.                         allHref.Add(fullUrl);; S; P& y) C& D0 F' P5 L1 k; k0 h
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);. e7 ]! R! e" r, y/ {) S' m, W
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
      Z: g% \8 }: d, ?
  28.                         //Console.WriteLine("补全链接:" + fullUrl);# m- C) N& Q2 h2 V7 \( ^
  29.                         //Console.WriteLine("…………………………………………");
      d3 h5 _6 q9 Q5 J. C
  30.                     }
    + ~% g4 W' p! S: V
  31.                 }( T2 l8 v4 i$ w0 |
  32.             }* g' T/ n3 a) G2 A% J% P
  33.             catch (Exception ex); s5 B- d' K9 R( J7 j9 N: `
  34.             { }
    - @* ?8 a. O3 D7 e3 l( q' F$ i
  35.             return allHref;; x! y3 v% P3 u# C2 h4 d
  36.         }( I* E, q9 Y9 x1 p+ Z- E% l* i
  37.         #endregion
复制代码

) g3 l4 e; L6 @1 C3 ~8 P
5 w9 u5 |. ?2 _
  1. $ H* }2 M& @" Z/ u1 w

  2.   Y: A$ g/ `! {( ~* H

  3. 3 _$ \; S& h1 l# c0 \3 C
  4. #region 数据去重7 _3 J: d/ d/ p3 j" {/ w+ w
  5.         /// <summary>
    1 n" T* L, N9 D' P7 N) w7 z$ k' F# E
  6.         /// List<string>去重
    6 a" o, e! C" J. o  O
  7.         /// </summary>
    * a4 _6 o  K# ~# q. u* z
  8.         /// <param name="list"></param>
    % @. M8 i& U( @! h1 y
  9.         /// <returns></returns>  V  b; U2 z' g( A0 U; W
  10.         public static List<string> getUnqueList(List<string> list)2 g* q9 i( P6 d- p8 K/ W
  11.         {# z- R0 @  l) n7 |
  12.             List<string> list1 = new List<string>();
    ; G+ X  Z9 g' d8 _+ b
  13.             Hashtable hash = new Hashtable();
    ( @$ r5 w) W# w  ^, \
  14.             foreach (string s in list)+ T) a& p1 @8 v( L6 w
  15.             {
    - s0 f+ N5 |( `+ T# e
  16.                 if (!hash.ContainsKey(s))
    2 D, ~' H; r- [% \( ]1 h. l
  17.                 {
    2 R% e" U$ X; i0 }1 O0 }
  18.                     hash.Add(s, s);! b# N6 U) s9 W) _& v6 A6 t
  19.                     list1.Add(s);8 M+ _$ t( [% W7 ^1 m! O& {" y
  20.                 }' M; B9 I$ j9 y. s
  21.             }* |) p  X/ m+ N3 u. y
  22.             hash.Clear();
    . T! T: t2 |% R, K7 ~
  23.             hash = null;( |( C4 H, ^3 I! D
  24.             return list1;- c1 i* c8 c8 \8 j7 n( K) ^4 z
  25.         }
    5 c1 ^6 s1 N. L- S  C. F
  26.         #endregion
复制代码

: n* D. Y9 B6 I  ]% x+ ?7 \. j1 X2 O' f/ c7 S5 P' M

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

/ t' ?4 D7 ?$ j# L, C. _十分感谢!!!非常感谢!!

点评

缺少一个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
* L2 c' ^9 i1 W5 K十分感谢!!!非常感谢!!

1 T& x- W1 X0 [1 ?: m3 `缺少一个gethtml,用下面这个:
. i0 y. r# b6 r' N8 j
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    7 S! J- G, y# Y8 i. c/ I
  2.         {8 K% I7 H: O- a2 F% K2 T
  3.             string strWebData = "error";: K  w* ~, |1 \+ l
  4.             try
    6 C7 [5 a  K; n; V! n* K1 G
  5.             {
    % c( n+ f0 D$ z3 l2 R) D- w0 U
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    8 ~2 V4 ~* u3 P1 V! z# Y
  7.                 // 需要注意的:
    # e$ h* P, C, q3 j
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等   V9 l3 N+ j$ \6 Z( c8 S8 H$ y' ]
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    8 \5 Q4 R5 x) n+ t
  10.                 // webclient.Headers.Add("Cookie", cookie); ( w2 V& ~! l  z$ Q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    8 T7 X" q$ h: h
  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)");- b# [, M" p4 M) T' v* ?. u' [) C1 k
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");& L/ k2 j0 x5 x( K- O
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ! n7 e! n8 c4 R7 z3 V$ a
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;* y0 o6 q( i  @6 A# }7 k0 {+ k$ O
  16.                 //如果服务器要验证用户名,密码
    * d, @9 J6 o1 }! N7 I; E, i
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    6 c7 ~6 s! c$ a" b7 q6 P: S/ ?8 \
  18.                 //myWebClient.Credentials = mycred;
    3 q+ o, e6 I: p+ F# F' m: b
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ! d; b8 Q* u7 g3 D7 r$ \
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    * O5 q- Z. Q  g" O7 X
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);' q% e5 L) d5 N* K
  22. 7 R1 y6 h* {) b* U* t- F
  23.                 //获取网页字符编码描述信息 ) g0 N& O! H/ d) x5 a2 B- h9 W
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);' N* s0 a4 J9 z. m
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    - k8 d; q* ?. j( S3 c
  26.                 if (charSet == null || charSet == "")& V. K- o# p" l4 P& E+ J  Q) A! J
  27.                     charSet = webCharSet;9 l. ?/ y) a  P3 I: G' W+ |; c) v* J
  28.                 if (charSet.Length > 0)1 j# k% A. t' j" O; x: R
  29.                 {
    4 a/ k$ p" q* n/ G# G2 @7 e
  30.                     charSet = charSet.Replace(""", "");! m( F2 E/ [0 g/ E; o
  31.                 }: N& e2 I( v3 A# B+ |+ |; x- o
  32.                 if (UseUTF8CharSet)( _$ \2 t1 O  N1 E( k; ], ~
  33.                 {* v) }7 F' Z( w' v, J! T) |2 e
  34.                     if (charSet == null || charSet.Length == 0): q) _9 P5 Q+ o6 f
  35.                     {
    % T6 S: A6 _, E& x8 X6 ?
  36.                         charSet = "utf-8";4 i3 {$ ?+ u; n, w- N& n: M: H
  37.                     }
    + w% i& E) C$ Z% x
  38.                 }; b% B, _5 S0 j. I# M
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)2 v* f2 F% _; w: a
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);% G9 x- ]9 o8 ^( i7 F1 R- U7 D

  41. " l8 [* l3 }9 T
  42.             }1 u) U" ~( _! _: \8 x
  43.             catch (Exception)
    8 C) J' w" a* v# R6 o9 N# n
  44.             {: W, [$ Q$ O/ H
  45.                 strWebData = "error";
    8 S2 K$ f4 [2 `) ^* w, `8 ]
  46.             }
    ( T9 X) P: X: ~) [6 l

  47. & }2 r4 r( U& r- T
  48.             return strWebData;
    $ Y# ~' F& W2 Q; [( z' _( m" m
  49.         }
复制代码

- q2 U! W2 Y( S  L" {" t$ H8 g' w7 f) v0 q
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 17:40 , Processed in 0.051940 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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