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个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9828|回复: 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 ~$ V6 f# u2 ^+ b: {6 m
  2.         public static List<string> GetAllHref(string url)
    " X( J1 _% {  B$ u
  3.         {, A. S/ ?4 o/ z' e' }$ {3 d
  4.             List<string> allHref = new List<string>();& P/ b! G& H6 Q7 u- _+ F
  5.             try
    ! n7 n+ f4 T/ i2 c9 @& b9 ]
  6.             {
    , b$ L+ X) b6 @" o" ~/ V
  7.                 string strhtml = soso.getHtml(url, "", true);" Q& Q& e; _% n) m; M- }  w6 L
  8.                 if (strhtml != "error")8 L9 z1 r$ W) z0 I3 q& V) w
  9.                 {
    ! R- ~/ k) Z: Z1 L  _. J
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");) `1 |) d' n/ C7 E
  11.                     MatchCollection mc = reg.Matches(strhtml);
    % y/ h5 a, N/ u  M; [
  12.                     foreach (Match m in mc)" k' P" l9 r7 z6 L
  13.                     {
    ! e; f' a! I8 N" Q+ S) O4 p( J# ?
  14.                         Uri uri = new Uri(url);
    2 [3 P' q& _- ?9 F
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);9 r' s5 e" @% A  V
  16.                         string fullUrl = "";  }$ M6 j9 }6 k
  17.                         if (m.Groups["url"].Value.StartsWith("http"))9 S9 q9 j! m, R, D* |7 w2 {
  18.                         {
    , h( _! M# H4 E: c1 v1 Y
  19.                             fullUrl = m.Groups["url"].Value;
    - U: [' y1 m( e2 W
  20.                         }2 c5 \! I3 ^9 z; U4 g  d) Q
  21.                         else  w4 S/ {* D, p1 Y. h7 Y
  22.                         {8 l; c' m5 J7 M/ c" C0 N
  23.                             fullUrl = thisUri.ToString();* O. f0 _6 j. f1 O  {
  24.                         }
    ; q/ H% j0 B/ A. z1 s( S6 F
  25.                         allHref.Add(fullUrl);/ |1 }4 X# ^% w8 G& n0 c% p
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    0 D2 R5 d4 _% O) X  H; J
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    : g5 L2 {& U* G6 L- a2 `* G
  28.                         //Console.WriteLine("补全链接:" + fullUrl);% j. @1 }% M% S2 ~9 `
  29.                         //Console.WriteLine("…………………………………………");
    ( D8 o, e4 B( S' a4 k
  30.                     }! e  {+ t( S, B2 F0 m
  31.                 }
    * U$ \3 _6 R+ U. J
  32.             }
    0 b8 {' B6 X' p- d4 N7 n' S( C, v
  33.             catch (Exception ex)9 s* ^: A. X! q  c' D! x
  34.             { }
    0 W. U' `9 U2 U4 l9 g: W2 G
  35.             return allHref;  g/ x* F! v+ v% T3 M: c& e
  36.         }
    1 K- o1 b% |, c' R0 c% }
  37.         #endregion
复制代码
0 O2 ~: y& |" L$ u; x
6 e) \+ A8 t2 S- ~
  1. 3 M; E/ F% J) p. R4 `
  2. 2 A/ T9 S% C" u

  3. 4 p% C* t  s" c
  4. #region 数据去重9 `/ q9 u9 l8 J+ u+ Z; u: a
  5.         /// <summary>
    " Y- s  B; P. T: C" c& Z4 Q
  6.         /// List<string>去重
    2 a- B1 d3 Z  y6 X% @* f  B3 f
  7.         /// </summary>
    % L6 {. {% f: g8 M+ Z- M% R
  8.         /// <param name="list"></param>3 E1 {- b" F1 E8 q2 G% s' V
  9.         /// <returns></returns>
    . L" P# Y  A6 e- o6 Q# q
  10.         public static List<string> getUnqueList(List<string> list)  \" s. P) k- a! T: Y7 T6 {
  11.         {
    ) O' @  o2 e/ m: c
  12.             List<string> list1 = new List<string>();  }6 {& y! o+ f% J
  13.             Hashtable hash = new Hashtable();
    ) B3 z* R' B" v$ C  T/ |# U5 {% _  Y
  14.             foreach (string s in list)
    ' ~7 \: A+ F- ^
  15.             {
    6 M5 F8 J+ ]6 C
  16.                 if (!hash.ContainsKey(s))
    # P( N# B+ O* L. U; P6 Q: M
  17.                 {! a/ t% ?2 Q9 h
  18.                     hash.Add(s, s);8 d% G! ~+ A! G- `* S
  19.                     list1.Add(s);
    8 d# n+ u$ _1 D" q- j; R
  20.                 }' V- V# s6 o% P9 y3 `4 `
  21.             }0 y: t# N  [6 _- A4 A
  22.             hash.Clear();
    6 L& ?6 N' k/ n% a; d
  23.             hash = null;
    $ C# P' F8 y' u2 c) X. D( M* R
  24.             return list1;
    $ J8 P4 m4 p) M) W" L# X
  25.         }
    ( H5 i) K  c4 n' O
  26.         #endregion
复制代码
4 c* O% V; E/ S

$ t+ ?) u' h. e+ T8 @" d

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
$ X4 n4 W( Z. N4 \- V2 f" k7 X, [
十分感谢!!!非常感谢!!

点评

缺少一个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
: E( e6 i- G5 f- h) j十分感谢!!!非常感谢!!
  R. G5 ?9 V' w- |
缺少一个gethtml,用下面这个:7 N! q2 ?! F3 f" @. i7 V
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 ' r+ v, R; U) @- G0 A
  2.         {
    ( x- |; N4 X: g1 u) Z7 {, f
  3.             string strWebData = "error";. }! t8 G& _' a* Y
  4.             try9 \$ m; P- O/ M- g* H
  5.             {
    5 G5 O/ @% m8 }* I5 s/ C+ r
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient & C6 d$ w: s( r4 V! U6 `+ A7 g
  7.                 // 需要注意的: " D+ R% l4 W$ y
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 6 j8 M7 P2 R. ]3 ^; ?
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    6 j$ R: H7 {* |/ p
  10.                 // webclient.Headers.Add("Cookie", cookie);
    0 t- H* v$ j+ b$ ]- f: K
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    % Z' v5 K, }. q- V1 J, \* \
  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)");
    ) U) Y" a: ~: F4 F* E
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    % O* b& T& d% m5 l2 B" i
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 0 w: F5 D3 G. V% p1 N
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;% l4 V6 s1 C; @5 m7 ~) [
  16.                 //如果服务器要验证用户名,密码
    4 u# X- a9 z* h9 Q9 i
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); " W0 o/ _; K+ B' B  ~
  18.                 //myWebClient.Credentials = mycred; 0 Z. A6 w5 a$ k1 c1 ]4 }
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) " \7 H2 c& z, S( P3 b, e) E3 Z
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);" R( Z- y' ~1 [7 G$ F6 _, Z
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);2 |6 r/ \) R& a7 i. _
  22. $ L/ b2 ?8 m1 R. d1 L
  23.                 //获取网页字符编码描述信息 / Q  W; M% [5 A0 m
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    & ]( o9 \8 W+ Y4 q! r) Q8 D
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    : S" ^& t% \: O4 U: E6 W
  26.                 if (charSet == null || charSet == "")
    7 u$ g) e9 ^, |9 d
  27.                     charSet = webCharSet;" v, N- e8 W9 z; J4 T! X9 `
  28.                 if (charSet.Length > 0)
    # t* y2 I4 x8 [" i! G" }, a8 M
  29.                 {* C+ o' v2 J; d" G+ U
  30.                     charSet = charSet.Replace(""", "");
    9 E( W, x$ v/ @) e0 ^
  31.                 }
    ' Y/ _' U. ]8 C. l2 n
  32.                 if (UseUTF8CharSet)
    ) A0 Y$ k! B$ _
  33.                 {
      e  o1 }8 Y; `  \6 a; M
  34.                     if (charSet == null || charSet.Length == 0)# R0 U+ K( l% h- u. v, o) L& _' I
  35.                     {1 E. p" T! m" M
  36.                         charSet = "utf-8";
    ( p* y8 h% Z' x% E
  37.                     }7 j+ D4 L8 }# M# ~
  38.                 }
    8 L- {8 Z# P( R, ^
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    0 a0 W" d6 P: K
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    4 t+ S0 @, `. `1 p9 l1 K
  41. + g" ~- R* y% {6 [$ G+ ^* E
  42.             }; z% P  K5 l" I4 m! r6 N* q& o
  43.             catch (Exception)  d/ J; U) h6 X5 @: [* X6 |6 ]5 M
  44.             {* t" t& V  I0 e/ `2 ~
  45.                 strWebData = "error";" e! _/ F1 d( N4 ^
  46.             }
    " i: x: g4 c! k  O! @' y

  47. 6 [) _/ c7 C3 \- m4 r
  48.             return strWebData;0 ?& Y1 u- X' y& J. J- Q
  49.         }
复制代码

  m3 O" _3 X6 v# a7 R6 Q
( ^/ E1 q5 e4 l
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 03:47 , Processed in 0.053758 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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