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企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9845|回复: 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 抓取全站链接
    * f3 A* y4 _& y* ?0 n
  2.         public static List<string> GetAllHref(string url)
    4 I3 a% |0 J+ K$ P7 Q& |2 ^* U
  3.         {
    ) K2 a9 [& F3 b7 V" z
  4.             List<string> allHref = new List<string>();$ I4 R" Z3 G: k  N- R
  5.             try
    * x* f$ I" M+ M2 Y- {- l' K2 W6 \7 {
  6.             {1 X* e# v% F, @
  7.                 string strhtml = soso.getHtml(url, "", true);8 V2 ]5 N7 J+ B+ ^9 |, Y
  8.                 if (strhtml != "error")7 c4 K  u; q" X8 e: N
  9.                 {
    % a3 z, j4 h3 |2 T: a, K' Z7 N" C, r! R7 d
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");( r* v& _8 @+ u" j0 s5 A
  11.                     MatchCollection mc = reg.Matches(strhtml);" ]3 n8 D% Z* C5 v; z
  12.                     foreach (Match m in mc)
    5 w! t: @. G- g9 Q/ g
  13.                     {' J) _- M' i7 h) G0 D
  14.                         Uri uri = new Uri(url);% Q5 q$ L1 |( y* |9 U
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    8 R8 G" L+ K# E# u- O& p9 P
  16.                         string fullUrl = "";, d' O: V" O, G' _8 F
  17.                         if (m.Groups["url"].Value.StartsWith("http"))+ {% X7 L& m" I9 o
  18.                         {
    5 q" t' {: T, T8 B* V; f" z3 L: @
  19.                             fullUrl = m.Groups["url"].Value;$ p& Y+ }5 J# K! z8 |
  20.                         }' W- i: u& p( w$ G1 O; A
  21.                         else
    7 G; B: ~7 {) Q  M: P% N# I, Z2 A
  22.                         {5 j9 B7 J5 s7 S* }0 N; u
  23.                             fullUrl = thisUri.ToString();; f" t, g4 {" {7 o  ^( S3 S0 O9 F# v
  24.                         }; |9 y( _1 e& R4 Q4 l9 r
  25.                         allHref.Add(fullUrl);
      w" p( q, F, t/ W' `, ]' a
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    1 {- S( R2 J) u' i+ g8 U
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ' S7 r5 G9 h$ X5 F
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    * F* q5 ?7 ^8 N5 ]2 a- |. g
  29.                         //Console.WriteLine("…………………………………………");
      a2 P' a( M5 V
  30.                     }& j: i! z* K+ z
  31.                 }
    " s3 d) |. I/ w, m+ A$ h# a! V( S
  32.             }- t- h6 b) L) V5 ^; ~  Y
  33.             catch (Exception ex)
    : A1 B+ G3 s8 T& F/ A5 |; x
  34.             { }7 a% j9 B5 ?4 B) G5 O, {
  35.             return allHref;8 Z9 z$ t' y) g1 J
  36.         }7 [) e8 y; I' G8 s
  37.         #endregion
复制代码
4 H0 B2 V$ N" \! z( i9 V
; z$ `9 a/ ?3 N& {# y2 b

  1. : ]9 Z1 Q# w% i( a% V
  2. / {% K$ @5 l  `
  3. * I6 ~* i8 ^$ T% y0 x' i
  4. #region 数据去重
    3 N. h0 Z5 j& U) P' w# D. u+ T
  5.         /// <summary>, o! y  }8 Y9 K% E
  6.         /// List<string>去重
    & o2 \  z# V8 R0 Y) x
  7.         /// </summary>& u# g7 @; u7 _7 y- ?& a4 q$ s; Z
  8.         /// <param name="list"></param>
    , c+ q$ t/ z3 P8 P2 m( B- P+ _
  9.         /// <returns></returns>
    # s% D' Q* r1 Q& K# u" B2 d" c
  10.         public static List<string> getUnqueList(List<string> list)0 U" ~) y+ C  p* l% a
  11.         {8 C  R5 Y. K# k- O* P% @
  12.             List<string> list1 = new List<string>();
    1 @5 Y8 V; P4 S. \
  13.             Hashtable hash = new Hashtable();
    7 o8 Y! Z+ |4 o4 ?; B, c
  14.             foreach (string s in list)
    $ b0 J8 O. e; t
  15.             {
    ( F! z' H. b/ W) X0 ]* J
  16.                 if (!hash.ContainsKey(s))* j+ b" q" a5 x  Q% c
  17.                 {  ^- d% T2 G  q' S* _" l4 k% B
  18.                     hash.Add(s, s);
    ; f* d; n+ P, G3 |
  19.                     list1.Add(s);
    2 U" A5 a5 I8 J
  20.                 }
    ' x! M& b* q) n& w6 t7 \
  21.             }
    2 r0 I( n" Z- l
  22.             hash.Clear();$ J2 w. v) _: C4 g7 f/ ]* T
  23.             hash = null;8 \1 w  A1 d0 Z/ G
  24.             return list1;
    2 E0 X7 n# G% G* S7 M' [1 r- ^
  25.         }2 ]* M6 }: q0 s, X7 C% u! m
  26.         #endregion
复制代码
* V& M8 w/ N! z0 U: f( K9 F# N

7 {1 Z8 d/ `! P' s

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

$ D# s* W' \! j  {十分感谢!!!非常感谢!!

点评

缺少一个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
; d% n) n! x6 x, U& s5 p( i# K十分感谢!!!非常感谢!!
/ L# B; g, S: s; N
缺少一个gethtml,用下面这个:
+ |, R, J0 L; {# t9 p) H2 e
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 " t+ P4 [, _! j0 t
  2.         {- `6 r9 ?+ A9 p1 \* G. V3 E
  3.             string strWebData = "error";* v' V# M% S$ H! Y. Z# n
  4.             try, b3 Z6 r3 T6 O6 X. ]1 P/ @0 c/ n
  5.             {
    1 C. x( V1 k" S$ u8 a8 F
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ! O: |! O0 m  t$ W! w3 y- G
  7.                 // 需要注意的:   C) M) o  u2 c# v+ L
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 $ Y7 X2 P& C! m' y1 o) H
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    8 `- {  T6 A1 c, X
  10.                 // webclient.Headers.Add("Cookie", cookie);
    & @( D/ T6 ]- Y6 V
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    " U2 g- f5 n: M
  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)");
    + O; u2 U3 e6 |
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");( h/ g: A* L  T2 U* v1 J% Y: q
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    0 g5 A. c7 P7 b$ z2 b/ M5 d
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    + d5 x; D; X1 Y. J
  16.                 //如果服务器要验证用户名,密码
    $ ?1 ~( J8 x! ?: i, g
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    2 x% V3 v3 j* H& R. t
  18.                 //myWebClient.Credentials = mycred;
      S2 _5 T; }6 M. z; u8 K
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    0 s# z5 D: e# H- ?, }1 M* L
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);# g" }* a  t; v  w
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    . `0 A, P) j1 e
  22. $ X' U% b1 m% R+ ]
  23.                 //获取网页字符编码描述信息
    % N8 ?* e: f1 K2 V
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);- v- _9 A' t3 T+ k5 q
  25.                 string webCharSet = charSetMatch.Groups[2].Value;# b7 Q' j/ m+ [& E8 @) K
  26.                 if (charSet == null || charSet == ""). P1 \. H0 q$ N/ M+ K4 }
  27.                     charSet = webCharSet;
    ' X% \# Q0 `0 y3 W. A; P5 `
  28.                 if (charSet.Length > 0)7 L* a; v: ~- ^8 R0 t$ E
  29.                 {7 k) z8 u8 z! z, L1 O+ P
  30.                     charSet = charSet.Replace(""", "");& M4 I3 O2 }% w0 i* }
  31.                 }
    & \6 r- P' P6 S# T  P/ y  ^
  32.                 if (UseUTF8CharSet)
    . f9 I4 D7 d: w' j$ v* w
  33.                 {# s' v$ j- J: D) ~6 E5 Q: H
  34.                     if (charSet == null || charSet.Length == 0)
    - D% y( I; P5 h2 J& T
  35.                     {
    * F5 X0 O4 U, ~3 ^  E- w
  36.                         charSet = "utf-8";
    1 `6 D" K: b- u3 |& Z, }7 m% u* J
  37.                     }
    6 b% |" h5 M3 Z3 U, P# ?
  38.                 }4 F* v4 y( n9 ~8 p) `/ o
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)& @% u8 k% d6 a: v
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    8 m- p9 D0 S% k; s6 Z0 `

  41. 6 d$ C0 x3 c( U) }
  42.             }2 J) G% N: G) y; y3 y' u# h4 D) @
  43.             catch (Exception)
    0 p: V3 U& U8 [( N6 {, \& Y3 v* ?
  44.             {2 }5 A. m9 Q' {1 x) M- C4 G
  45.                 strWebData = "error";
    ( P9 `. w' F; \
  46.             }
    8 h' b0 A( [( F: a/ L  Q

  47. ! @1 F* t- _* l( y6 q- S2 A+ P+ |9 Q3 s
  48.             return strWebData;% u5 z5 q1 P! M+ h
  49.         }
复制代码

2 j: ^  G. Z, a5 H0 z
$ H5 N- J( _6 I
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 01:37 , Processed in 0.054486 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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