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加白老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
最大欧洲Nutra网盟BA找量 FB个号1块一个TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理Proxy4Free独家住宅IP池❤️免费测试联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10007|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接. p& d) T/ p, t
  2.         public static List<string> GetAllHref(string url)4 v; ?; E: [1 B( x. V
  3.         {! \( n  J) d0 V$ B* L
  4.             List<string> allHref = new List<string>();0 g! ~: j& u, }" ~; Q5 z3 y- J
  5.             try
    $ b' M8 ~/ h+ A* s, T- l; E% e
  6.             {
    - X- g3 h- ~0 N, q1 F9 n* `
  7.                 string strhtml = soso.getHtml(url, "", true);
    " i2 a6 |5 A  F( T# C
  8.                 if (strhtml != "error")7 d2 z9 b/ q  k/ O: H) N. P
  9.                 {0 h! g- @6 G! m% }: E
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");( O6 q- W2 z8 c7 I
  11.                     MatchCollection mc = reg.Matches(strhtml);
    . B; D7 p3 ~# b! w  l
  12.                     foreach (Match m in mc)4 M2 o# M$ @/ N( r% _, _
  13.                     {3 F! n# W$ d* b: \/ e2 y9 n
  14.                         Uri uri = new Uri(url);) B5 }4 g8 ?7 H" }' E! o
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);  o. A3 P$ Z% Z" e
  16.                         string fullUrl = "";! f' [5 i( ~6 f8 e5 u
  17.                         if (m.Groups["url"].Value.StartsWith("http"))9 G$ I% N' @  }* x# ^: n
  18.                         {  I9 |0 F" y3 U/ J" S& y
  19.                             fullUrl = m.Groups["url"].Value;. f" d0 d: O" m. X: ]0 n3 Y8 ~# ^
  20.                         }
    ) s1 _+ H0 j  ~7 a
  21.                         else
      u! m& e4 w5 |% H3 @* r5 ^4 p
  22.                         {
    , `  x  m8 ]! L5 E8 B
  23.                             fullUrl = thisUri.ToString();8 \; m" i3 z4 A( ]$ @
  24.                         }
    # C9 u2 `6 j- r. X' o* e5 a, r
  25.                         allHref.Add(fullUrl);/ W( x3 M$ L" b. J
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ! D/ }( w  F: s' T! e7 b3 G/ ?8 F5 O1 `
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);1 Y9 K1 x0 \, ?2 h2 c* {  c5 \1 V$ x
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    0 Z' }' ~, P6 w8 a& g; B5 q
  29.                         //Console.WriteLine("…………………………………………");3 r% c2 t& y7 d2 O
  30.                     }1 h, a0 i: d) r) M
  31.                 }
    " `$ A- e7 }- `7 W4 h$ F1 F
  32.             }
    : |" ~9 f8 y3 H  u; Y
  33.             catch (Exception ex)
    5 o0 t7 y. l" h" f$ f5 m/ u
  34.             { }
    ) Z2 C5 V9 h4 N
  35.             return allHref;
    , i& n+ z2 @' \( N
  36.         }4 ?  k' N. o7 Y+ W2 o, H
  37.         #endregion
复制代码
: k. `8 W; i, Z' f" o9 i

2 V" @& B, w, W
  1. ! e3 l' D' [6 P* k. n/ Y0 C! _/ t* h

  2. 8 x9 d9 W2 `. b* h( r
  3. ) I% z4 t8 F& h8 V; J4 s4 j2 n  T
  4. #region 数据去重
    : j/ r% y) m; @& Q" D: T
  5.         /// <summary>  q  O) S( n" Y1 h# p6 L; X5 O6 U  X
  6.         /// List<string>去重- e3 w; R0 z5 P# k* \/ `6 N* F
  7.         /// </summary>' A' [5 T  s& X0 L( k) e# \# L& v" F
  8.         /// <param name="list"></param>4 g& x: o" s3 A; v. u$ Z
  9.         /// <returns></returns>9 [3 z: ~8 G3 W) b0 ]
  10.         public static List<string> getUnqueList(List<string> list)
    - ^+ |+ U) ^; Q' Q7 B, |6 S
  11.         {
    ' k6 R; e' C7 `. V2 B
  12.             List<string> list1 = new List<string>();
    $ K: b. A. Q+ E
  13.             Hashtable hash = new Hashtable();
    8 k. a3 U  P2 V$ ^6 f! k3 @
  14.             foreach (string s in list)4 p# \( n- M0 H: f) Y# W# G* u. q) @
  15.             {
    ; p! T, y" s* y  P8 O8 W
  16.                 if (!hash.ContainsKey(s))
    8 q! r! j$ T5 @- B& s- A* E
  17.                 {
    0 e/ R7 N% A4 p: h# _  V
  18.                     hash.Add(s, s);
    % b" Y0 p" J8 `- m* y# k4 q6 b
  19.                     list1.Add(s);7 v$ r+ C2 Q1 ~8 f% D" R
  20.                 }
    5 O  h0 z, s9 o2 l# |& S0 g
  21.             }
    7 V# g3 `& I" ]- }* w$ e- ?4 l1 q
  22.             hash.Clear();
    & m2 b  U$ r- T3 w) G
  23.             hash = null;) E8 y0 V# N, m0 {7 z% S1 b
  24.             return list1;' g% H6 K8 S2 c# f# A
  25.         }- v! P0 D# ^0 L
  26.         #endregion
复制代码
! d/ K: g6 G& l; V

1 r# b3 [& g) t& ~# z6 M

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

, X* b: G, R+ [4 Y  s十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
* B% r1 B% Y- [8 e. G) M) p; A# R8 Z) x十分感谢!!!非常感谢!!

1 i) W4 Y! R  J( h' I  o$ q缺少一个gethtml,用下面这个:
3 r$ e5 @5 x) K
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    " D) s+ V  J8 q2 D/ S3 }" Q
  2.         {. T  c4 T7 ?; m: {: |! Z
  3.             string strWebData = "error";& {/ p9 k' @9 y# a8 z
  4.             try/ K$ }! f% K* C9 J
  5.             {! N( I9 q# C3 P# J2 g$ W
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 3 u) @$ m1 |. t  D. _4 C: X
  7.                 // 需要注意的:
    + T9 Z+ E# Z3 G, a5 [0 e
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    " X/ E' m  C. a2 y' @+ n7 W
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    # v* l1 _, }! t3 Q$ h
  10.                 // webclient.Headers.Add("Cookie", cookie); . P/ `% y) h/ ]( }# G7 b
  11.                 //这样可能需要一些重载方法。根据需要写就可以了0 m8 i$ R& }8 i# l, 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)");; h  ~+ r0 R! g& W. e
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
      F. e5 g9 {8 [3 G) z9 `
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 0 q% C$ O  N! L
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    # I, Q# T8 E$ K$ ]' |+ e% V0 L
  16.                 //如果服务器要验证用户名,密码 8 r6 A  G& {' ?; L! M* E6 ?
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 6 U4 ?4 O* _, V* P* y
  18.                 //myWebClient.Credentials = mycred; , X0 B" ]2 D* N4 A$ n5 a
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ) Y5 f3 K9 m3 d; |* l; M
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    " q, `6 B6 b& |7 P. h
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);; B4 u8 J. H# V1 i
  22. ; \3 V' \; C% A  c6 H
  23.                 //获取网页字符编码描述信息
    6 J! T- e: R! z$ Q3 u
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);; ~9 f4 f9 ]4 C! I# _) W! v8 S
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ) M" ~0 J( m: l" n6 e9 N
  26.                 if (charSet == null || charSet == "")& X( J% t* n' t# }1 w
  27.                     charSet = webCharSet;* R. @7 C! G" X  }" l7 d
  28.                 if (charSet.Length > 0)
    . M! Z& S+ O: w5 x2 I- D
  29.                 {
    & C: {8 ]% D5 \
  30.                     charSet = charSet.Replace(""", "");7 M0 S: K- f/ f( g7 \5 [
  31.                 }
    # ]* |9 [9 R9 P: k0 Z" o" d0 f6 I
  32.                 if (UseUTF8CharSet)2 X. U* f  N  i# E4 o
  33.                 {
    4 s  q7 k5 W2 |4 o2 K+ S
  34.                     if (charSet == null || charSet.Length == 0)
    $ v8 g2 J# Q8 f1 {3 S/ s' [! U
  35.                     {
    & \6 @" Y% c6 W
  36.                         charSet = "utf-8";
    * Y# h; ], l( x9 m( e$ k& t; Q- s
  37.                     }
    ( q  o6 ], x# N6 \' k
  38.                 }9 K9 c0 n# ~& k2 k
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)1 u, V. S7 t7 P5 l- N$ T% m
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);" R; {3 v( i" t9 \  F# J: t

  41. , \8 A* Y/ X, ~9 Y$ d' m5 c
  42.             }' [* y- i5 I* @: c4 y
  43.             catch (Exception)
    . v* Q  I2 R8 Q
  44.             {& x& e7 B/ E1 Y0 k
  45.                 strWebData = "error";
    * [; L* r% d# M
  46.             }
    ; l4 ]  A) b+ L9 p( G: K. Y

  47. 3 M& V+ N1 ^6 a4 \/ z
  48.             return strWebData;2 d# J8 t) [3 Y' z0 Q' |
  49.         }
复制代码
0 R- M5 G! ]7 Y. |' {! y
' t; e) ]2 ^. p$ ?1 r5 ~3 X; }/ _
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-1 06:38 , Processed in 0.059389 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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