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代理虚拟信用卡+独立站收款
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理
FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9986|回复: 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 抓取全站链接
    7 _+ Y/ T! y0 C9 c: w
  2.         public static List<string> GetAllHref(string url)
    1 z1 \0 ^+ u8 x$ w
  3.         {3 m" |. t, z, [. _, i) ]5 q
  4.             List<string> allHref = new List<string>();. ?1 J) v6 Y6 y7 D. Z+ X. C7 V; c: V- M
  5.             try, P5 W7 y4 I2 _3 N% L
  6.             {7 @$ e( ?) j* J! a0 |( r& Q0 J3 j
  7.                 string strhtml = soso.getHtml(url, "", true);
    / v7 ~! l! m2 W1 p
  8.                 if (strhtml != "error")
    & e$ p. {$ _/ U" u& [0 `
  9.                 {
    2 W# A) W% E8 k7 t3 e
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");# U% Q$ S. G; `1 k) P/ `- y- X6 C6 w
  11.                     MatchCollection mc = reg.Matches(strhtml);- D, j$ ~$ _2 T
  12.                     foreach (Match m in mc)6 Z  E7 G' |( s
  13.                     {
    & n# O: M! T$ a; ~% P% o' S
  14.                         Uri uri = new Uri(url);
    9 d6 }. y+ c. ?$ S
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    # c3 a2 s( k' C& R1 |  h
  16.                         string fullUrl = "";- W" i5 L  Y: Y: x- B& ^. G1 I' I
  17.                         if (m.Groups["url"].Value.StartsWith("http"))! X5 k+ ?) h9 j9 S! T) T
  18.                         {
    3 ^$ b4 A/ c" e) v9 n) [3 \
  19.                             fullUrl = m.Groups["url"].Value;
    8 I8 ~8 T4 {4 L$ j+ D' R
  20.                         }
    / a2 P; [- o, ~; Y0 {; P
  21.                         else* J7 `9 m0 m% K1 v
  22.                         {
    " U% }' V. m0 |7 ~
  23.                             fullUrl = thisUri.ToString();
    7 I. ]& K$ p- r. |; M
  24.                         }- F$ g5 y! i! S; M0 ]6 I& w( q
  25.                         allHref.Add(fullUrl);
    " ~* d# i. h# }) v0 L& ~& ~
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    3 W( `6 V+ b* ?4 E/ u
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);4 B  o  u; w( B5 E; f. h; ]
  28.                         //Console.WriteLine("补全链接:" + fullUrl);. V( Z5 [1 P3 [+ A
  29.                         //Console.WriteLine("…………………………………………");
    8 c; F9 t5 j, M
  30.                     }
    " U2 X, M0 f1 {$ R
  31.                 }- `5 e9 I/ L8 e) ^
  32.             }) D8 K/ B9 T8 }" C/ v! _1 v- ^, e
  33.             catch (Exception ex)
    6 Z6 _; u& k4 b
  34.             { }
    % R0 Y, x1 \* M! K- p
  35.             return allHref;
    / n+ H6 o8 T; d! A- i8 `% B0 f6 Y
  36.         }
    1 A5 J& O6 I: _& Y% |
  37.         #endregion
复制代码

& q* \! f; z0 g( n% w! ?4 o" y6 U, Y, f- n
  1. ) i& b9 h- J, e

  2. " H* [  t4 [" {8 l: c/ K

  3. & @+ x" Q% |- W, z' g8 t
  4. #region 数据去重
    # p7 k  ^# a  f* P8 q+ `
  5.         /// <summary>4 t7 [1 x1 a7 x2 K/ S
  6.         /// List<string>去重
    , N. X/ L" Z  B7 O, P) _! ]' z
  7.         /// </summary>& Q5 F; \( n2 X6 w
  8.         /// <param name="list"></param>3 K. s. S1 B: q9 R, t$ \
  9.         /// <returns></returns>, J( a. c5 z+ ]1 O3 G! I& ^
  10.         public static List<string> getUnqueList(List<string> list)& {) @/ A% a- u4 _& P3 K8 d/ W
  11.         {
    0 b0 n- n& c$ c& r% j
  12.             List<string> list1 = new List<string>();- g9 r2 w5 d+ Z( T. t" B4 d0 q
  13.             Hashtable hash = new Hashtable();
    & D3 J  O4 y( ~. b
  14.             foreach (string s in list)- {& d6 `# l, Q- ~8 v
  15.             {
    % Y' q' j+ O2 }  `4 m8 M- e) b
  16.                 if (!hash.ContainsKey(s))0 H' Q7 E6 n7 F8 m" `
  17.                 {
    8 K1 j- x' p3 e  u  D
  18.                     hash.Add(s, s);/ N5 a8 x6 P3 A; b2 w
  19.                     list1.Add(s);
    2 F0 a8 @" M) E" ~
  20.                 }5 Y6 u' ]3 x# P# S9 Z
  21.             }
    6 D! j2 q9 b" f; m) A
  22.             hash.Clear();$ g( ^3 X3 X/ x' y* J6 t# H
  23.             hash = null;/ G  ^8 x5 w, s" ?
  24.             return list1;
    ) N8 m# Y4 c! x4 R. i
  25.         }
    + B, p& ], Q) z2 e& I
  26.         #endregion
复制代码
2 R3 A# L/ {7 F" x7 v7 ^# l
$ ]& l( H) L# i

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

  ]. n2 V  G8 k0 S; P' ~5 S十分感谢!!!非常感谢!!

点评

缺少一个gethtml,用下面这个:  详情 回复 发表于 2016-2-26 16:23
回复 支持 反对

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:202 s% H- `: q1 |# p8 O; u" G
十分感谢!!!非常感谢!!

0 g% S3 l  o- R) ^. ~缺少一个gethtml,用下面这个:$ V5 P) M: o8 j+ N7 U
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    6 k9 f4 e) ]* ~( f% P0 M
  2.         {8 O# t& _% i: Q. N6 n" r: t
  3.             string strWebData = "error";
    ! `+ a2 f; T/ x9 l0 N. C4 ?
  4.             try- s6 N: Q' ~- z/ Y. m5 R
  5.             {
    * G9 D) X, m& G- `  A% b0 V
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 7 Q( Q4 R# Y" C- }7 I
  7.                 // 需要注意的: ( k% W; a" K" Y5 d9 W( `0 K
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 % P- ~# f- \* G6 D# u
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    . R% s& K5 `1 O8 g% o
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ; B& |9 I9 R% [4 t
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    / _; C$ u0 A# M: Q! x
  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)");
    7 j# n( d+ L( i. t- f
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");' I, y; e% B+ f3 E0 R% p
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 $ ]' s' a0 [' I5 W9 _  |6 A/ N2 {
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;4 w! p0 ?! D( x6 n+ E& a' v
  16.                 //如果服务器要验证用户名,密码   q$ A8 f/ [2 M2 a( L
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); + L) _( M% \( P- x+ t
  18.                 //myWebClient.Credentials = mycred; + }: a- `2 ?: ]
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) " V" j; u3 m8 F: s0 n
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    * O; G9 w  K3 O  U2 @- T
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);, v& ?7 y: R& z+ X' s0 t& q( W
  22. 9 Q- x, d; w3 J  ^) E* B
  23.                 //获取网页字符编码描述信息 + F) z& y  s# B6 {/ Z7 c. \
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    $ W( }) l% B+ p: w  W% Z9 b
  25.                 string webCharSet = charSetMatch.Groups[2].Value;* Q  v& [$ @6 C, @% ~+ A/ `
  26.                 if (charSet == null || charSet == "")
    & @4 x' V/ O& P" L- B+ v
  27.                     charSet = webCharSet;
    2 Y7 W) F& V. D( @8 Z
  28.                 if (charSet.Length > 0)6 a7 ~) f/ l; x: d: @* c, V
  29.                 {6 ]" e! f& t) l* K% v
  30.                     charSet = charSet.Replace(""", "");
    1 C: a" s* u; F1 ^% T5 A
  31.                 }( p  m( o) L, V( f
  32.                 if (UseUTF8CharSet)' o2 u/ l* {4 X+ o3 W5 G) ~
  33.                 {; f7 }9 v1 T, w  D# \
  34.                     if (charSet == null || charSet.Length == 0)
    / h; Z; E- c0 n4 [5 Z9 L) t4 {
  35.                     {
    & s& y9 E0 T- Q: r
  36.                         charSet = "utf-8";. \3 Q( T9 _" M( j8 ^% a' s
  37.                     }; \; X. J. g. r% ~8 V# n' n+ t
  38.                 }* t& `; u4 I2 \" C
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    ! d: d* D1 t; N* t
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);) P1 h2 Q# @$ c" Y, S/ w

  41. 1 Y5 _. M3 k2 G7 [
  42.             }
    ' [2 m, v5 H( \( n& h$ V1 F
  43.             catch (Exception)
      E8 p9 Q6 B( C
  44.             {2 S, Q  \9 f/ m( s/ \
  45.                 strWebData = "error";
    ' N9 h) d* C6 X3 e* F5 e+ C( M
  46.             }- Y; T0 r% p. r5 l+ P8 V
  47. , r7 ?3 y# w% q2 p
  48.             return strWebData;
    , H) x( C1 ^+ h. q, m  R
  49.         }
复制代码
* v* C0 J% F0 K+ Q6 I
- Y- u! u) r' H
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-19 16:52 , Processed in 0.048389 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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