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充值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%,国内持牌机构  
查看: 9953|回复: 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. j- E3 |0 f. P; t
  2.         public static List<string> GetAllHref(string url), H( i2 h# ^1 u( f7 T! d: @0 D
  3.         {# [* v2 |& u  e' z, b) k. ^. o
  4.             List<string> allHref = new List<string>();+ b- T, E, G& Y5 `$ _7 T9 ~; i0 Q
  5.             try
    3 Q+ Q- g, d- X; j8 U$ e
  6.             {  f" J- ~" f% G& ?8 c% d5 u2 z7 X- ^( i
  7.                 string strhtml = soso.getHtml(url, "", true);
    # Y& t% E, r3 b9 q. w
  8.                 if (strhtml != "error")
    % r7 y2 w1 B9 F
  9.                 {
    2 w( \6 m% @4 {2 e+ p1 x
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");" j  i& p- V) }2 [/ `  N: e7 a
  11.                     MatchCollection mc = reg.Matches(strhtml);; C( g' C1 L% C+ J; \* @
  12.                     foreach (Match m in mc)) ^9 o- U" F* p/ q
  13.                     {" F  }. \1 @# O3 ~
  14.                         Uri uri = new Uri(url);1 Z% G/ B- |$ _; J' |
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ' y7 S6 ?6 S! t  ~
  16.                         string fullUrl = "";+ g" B" n7 x6 v/ `- v5 l1 G
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    - _) r: |3 G# {
  18.                         {
    8 T0 g. _: Y: F9 ]: D6 z
  19.                             fullUrl = m.Groups["url"].Value;
    0 B4 F; @' M( X4 G8 V0 A
  20.                         }
    $ d' a+ T# z5 T1 L7 T# x8 a
  21.                         else
    " `' d0 h3 B; e) W
  22.                         {  ^7 @1 z! G8 M2 T5 r( Y1 j
  23.                             fullUrl = thisUri.ToString();& J+ K+ A1 K% }) |/ A
  24.                         }& O+ ]/ X2 H0 P
  25.                         allHref.Add(fullUrl);7 |6 a* e: S( _% |- r+ r
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);8 d. r3 ^* M$ _& @$ e- T1 K4 o; {
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    4 `: U" K/ u# ]
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    0 N: c( e. e+ S- N) _) z( L
  29.                         //Console.WriteLine("…………………………………………");
    4 C* a/ K8 g) w; `' x3 O
  30.                     }8 \; \* u3 t. |* w. o; v; b5 m+ d
  31.                 }
    . X( y4 j, @$ Z& s7 Q
  32.             }& B7 n& I3 ~0 G. u
  33.             catch (Exception ex)
    5 t0 Y; \# l8 K& g, B7 Q
  34.             { }
    . }5 G6 A7 Z  w/ m" H
  35.             return allHref;4 H! @9 w  M/ K  k' ?+ a: m
  36.         }4 @" K9 ~  D* u6 S6 p, Q
  37.         #endregion
复制代码
: M7 @$ _6 U, h/ Z; T8 J

0 E. S: ]) a# U' Y: R) X( Z  `
  1. : g. L  C) r# l: |4 L
  2. 3 ?) C  T/ p7 _% x! @! j6 _" s

  3. 2 ]6 _( D; r, w% I; t
  4. #region 数据去重6 Q, A: S6 I, f' E% o
  5.         /// <summary>* y! |8 V/ L. ~* S7 l! Y1 a
  6.         /// List<string>去重
    * X$ x7 ^- ]8 d# F
  7.         /// </summary>
    1 w' p) X8 Y! ^, o
  8.         /// <param name="list"></param>) `' {3 G' l* I! K0 J& j
  9.         /// <returns></returns>$ B7 D' t! {  b0 s3 ?, R  @
  10.         public static List<string> getUnqueList(List<string> list)0 P, k  u7 u4 x- e8 G
  11.         {
    1 w5 Y7 b2 k2 s+ }" O6 _* k8 }
  12.             List<string> list1 = new List<string>();
    / c" T4 B) U# Q4 L( c9 f( [
  13.             Hashtable hash = new Hashtable();
    & K4 ~4 n* R: a/ @% k! w$ l  q
  14.             foreach (string s in list)
    0 x/ q  g! Z0 y# d) H
  15.             {
    ; y4 |: R8 ?" l9 N5 j: U$ ^
  16.                 if (!hash.ContainsKey(s))' F. c% [6 S0 k, U
  17.                 {, g  @+ S3 h3 P4 z- F3 _+ a' }
  18.                     hash.Add(s, s);( G% r! w+ K( Z; q9 R
  19.                     list1.Add(s);" t. d3 X3 J2 |0 _% I% q
  20.                 }
    ; @' i# X& K- B: B
  21.             }- D; P/ j7 P, f+ P7 \
  22.             hash.Clear();  d/ h  T; Q; \
  23.             hash = null;% Z! U/ z- v, W+ n) a6 ]/ S' S
  24.             return list1;6 R* L) E5 a# ~
  25.         }
    , B7 M+ k9 k' r- W5 @
  26.         #endregion
复制代码
! L" j. L1 ^2 q  \6 q+ O" C2 D
( z% U3 p3 z/ `8 Y5 T

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
  q7 C6 T, j( U: y: t
十分感谢!!!非常感谢!!

点评

缺少一个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
) B0 @2 s' Q: e5 ~十分感谢!!!非常感谢!!
) b6 ~! C/ W* D% z7 x9 O
缺少一个gethtml,用下面这个:1 z  y! k$ b- |  Y6 w! l
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 $ n, N$ m! ?! r  U3 y4 @
  2.         {
    ! H# c- M, G# y6 [8 S8 `9 A) G
  3.             string strWebData = "error";
      S5 E% U  |! m$ k$ F
  4.             try
    4 [9 Y! P" w7 q7 r; h7 q. @" R
  5.             {9 @$ o7 b4 h9 G8 t, \
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ' I1 ~' ]  o8 |) c5 H. z
  7.                 // 需要注意的:
    % L( o; ], n7 p( }7 S6 V! m
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 * A$ Z) ?8 i+ l( F0 q2 i
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 9 r0 S  B( F* R  p- t) O& E
  10.                 // webclient.Headers.Add("Cookie", cookie);
    4 E; S9 Y1 C# q3 q8 ]1 |
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    2 J& V! |4 P' 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)");
    , U4 t* }* w# H0 V; u& C
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ( s: T5 I6 m, o/ O
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 7 V7 Y" ?- J: M! y# `' X3 F
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;8 p) a8 Z, {1 k) C
  16.                 //如果服务器要验证用户名,密码 ' `3 A: E7 B5 f, n! y8 t3 {0 q
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 9 T1 r6 _' J4 o! _
  18.                 //myWebClient.Credentials = mycred;
    ! q; I" [  @- D1 [
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) : m8 |9 }) K9 x4 X$ M
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    1 v4 q5 e0 _  N5 y
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);: g: t( |6 u5 ~- n) f/ @" n" ]
  22. & k* t# P) ^  M
  23.                 //获取网页字符编码描述信息 4 j- m* x: d2 X
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);2 A8 z" U9 D5 ^
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    7 {% r' v* t2 }. G) \/ Z  O
  26.                 if (charSet == null || charSet == "")
    ' y" S. A$ x! [0 b; Z. o
  27.                     charSet = webCharSet;5 Z" d  n% ?+ W' a" p
  28.                 if (charSet.Length > 0)" h& Q3 u# ?/ Z3 s" I
  29.                 {
    ) M/ v1 k! |% ?# m- G- F
  30.                     charSet = charSet.Replace(""", "");
      M# v( [. ~% O& Q
  31.                 }6 }/ }, n; d5 ?% a0 W' {
  32.                 if (UseUTF8CharSet)
    1 @; H( r' t3 H  R
  33.                 {
    0 M0 E' L$ r- W! j+ _: n& Q
  34.                     if (charSet == null || charSet.Length == 0)+ `$ X# h: a7 \. n! e, d% ]
  35.                     {  e  N$ R7 |" a; L
  36.                         charSet = "utf-8";
    / o% q4 [; r$ ^2 y% p# a$ F$ u
  37.                     }
    2 W! c, x& h$ M7 X
  38.                 }/ q* [: J. {' Y* q. k0 e& y/ ?
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)+ M8 C* _) v3 w- L9 M
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);+ m5 p* H: f) k9 M3 ?

  41. - I! n3 R) [! J/ j
  42.             }
    + q. _" b  u0 O' S
  43.             catch (Exception)! {( Q% L  M3 A' b& K
  44.             {( x9 H6 B5 X; h3 y
  45.                 strWebData = "error";
    % K+ u# C8 V+ G' y9 H, @$ l
  46.             }
    8 @1 R4 Y# N/ _+ G2 @( a

  47. : X+ A9 {& r+ E  c! i
  48.             return strWebData;
    & \: l" ~8 j4 M, X7 y" \
  49.         }
复制代码

5 p. L/ v6 k7 f" H& W& ~1 J* {' Y; c! X6 z6 ?
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-13 15:43 , Processed in 0.051692 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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