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户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手
TK加白户/二解户/FB海外户/GG老户海外CL企业户源头FB虚拟卡⚡️消费越多返现越多FB广告Spy工具⚡免费试用✅
FB个号1块一个TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️FB企业户海外户,授信户,TK加白户
联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 10076|回复: 7

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

[复制链接]

36

主题

213

广告币

297

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    % Q# F) r9 I1 V. j2 `
  2.         public static List<string> GetAllHref(string url)
    ; A# s0 f4 m0 l: ^$ _
  3.         {
    8 ?. E3 p, ?( {$ Z7 d  h
  4.             List<string> allHref = new List<string>();' W  o/ u* T' ^3 f( o' w' l
  5.             try
    $ M) D4 A( W! \/ ]/ N2 }
  6.             {+ }& T; A7 r* _/ m; z
  7.                 string strhtml = soso.getHtml(url, "", true);7 r8 G' X, I( r( z, ?
  8.                 if (strhtml != "error"): g  Q7 \0 l- a; {/ U3 u
  9.                 {
    7 s& n9 X; ^8 x: u
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    - d/ N1 n: y  h3 B, E2 h
  11.                     MatchCollection mc = reg.Matches(strhtml);
    - ^1 T. f/ ~3 s! o$ m! l
  12.                     foreach (Match m in mc)
    9 L3 Q9 w) v9 _9 I
  13.                     {
    $ l8 d2 c0 k. a- {) n1 o
  14.                         Uri uri = new Uri(url);9 c+ Y7 ]/ N+ ?" `+ N0 ^
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    7 @6 O0 s! `/ V) `& l  g3 V
  16.                         string fullUrl = "";
    / k! S6 G6 ^2 v5 k7 h% ^; U$ Q
  17.                         if (m.Groups["url"].Value.StartsWith("http"))" f' _2 d! T! f5 r1 U* o) e
  18.                         {5 b. T# y$ W! z0 n2 F, X
  19.                             fullUrl = m.Groups["url"].Value;) f  I0 H* ]3 [: ]  W! L# D
  20.                         }
    + f  a( p1 S( H4 f  V4 L9 @
  21.                         else
    ' w9 c- Q$ \2 q' i
  22.                         {
    * ]# M% n. N2 P' j
  23.                             fullUrl = thisUri.ToString();
    6 F% v( o0 p: B
  24.                         }3 R2 [7 `# ^3 q  f' q7 k+ K+ s7 N
  25.                         allHref.Add(fullUrl);( q) p; i7 M9 V+ ^0 T6 E
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    , U1 G) L9 [: s$ q( X' D, ?3 i; M
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);7 W/ I3 f% i9 ~( }: {7 t
  28.                         //Console.WriteLine("补全链接:" + fullUrl);3 d! V: S. d# |; L- O% w% S$ n
  29.                         //Console.WriteLine("…………………………………………");
    6 I2 T: y/ \1 @
  30.                     }
    7 y  L2 v9 p9 i2 V
  31.                 }
    ! I/ H' l/ E9 J& h0 f
  32.             }' E- L/ M& v9 ~4 A0 r7 j' L
  33.             catch (Exception ex)
    & A0 Z, t2 R( o$ t( [. q2 k/ u1 s
  34.             { }
    ! \! k+ T# |4 r" ^; ?3 E- ]
  35.             return allHref;' |2 S0 {' e- I, y+ ~
  36.         }" f* r9 y/ e8 t2 p9 _
  37.         #endregion
复制代码

2 L5 W# }2 t/ |# C
8 H. ~% K) \5 S! m! G* n! y

  1. . [1 I" f: z, E8 C# U/ z$ m
  2. ' H2 ?8 `. }* q  E$ k
  3. . ^7 M( D/ K* a& h6 x/ I
  4. #region 数据去重/ C2 A9 N0 l' ~, ?0 o
  5.         /// <summary>
    / Q) m3 B+ H+ G5 M" l' f& w1 c" ?
  6.         /// List<string>去重7 u! @2 t/ X5 g) A) Z# D- O! G
  7.         /// </summary>
    1 i0 c# K- z+ \
  8.         /// <param name="list"></param>/ B3 V/ |! |2 L" M' Z- W: k/ |2 ]
  9.         /// <returns></returns>
    0 t8 U, d3 H' M' S  V4 V
  10.         public static List<string> getUnqueList(List<string> list)
    6 A, k5 \4 B1 E( b# U$ F( p0 R
  11.         {7 \( _6 B: V2 u& y5 M2 X3 R* H
  12.             List<string> list1 = new List<string>();
    4 K4 s  n. o' w% s+ E( ^% B* u
  13.             Hashtable hash = new Hashtable();
    ' V6 P0 @  }6 {0 o3 ~
  14.             foreach (string s in list): i8 j( s5 m" h
  15.             {( A7 \. ?$ C$ W: b) L1 e3 L3 b
  16.                 if (!hash.ContainsKey(s))) W: }- X* k6 W1 o
  17.                 {# ]  x* a! ~6 O% G' E) [, r
  18.                     hash.Add(s, s);8 j7 o; u& o" |
  19.                     list1.Add(s);& i/ v6 [$ f' H  {3 g
  20.                 }$ q1 n% ]! G+ E0 ~) a/ ], G/ |
  21.             }
    2 |1 `- e3 E4 [* _
  22.             hash.Clear();
    * X( `: c. I4 U9 R. G; C/ \
  23.             hash = null;
    ( v. [9 K: b$ p" P- u9 u2 b2 i0 x2 j
  24.             return list1;
    # m3 I) {  R: j, L, n
  25.         }' `9 `9 C) W2 ^" y1 I
  26.         #endregion
复制代码
# c) G$ p0 [  j5 g; E/ t/ k
# X& S, z( y# F' B1 C. J6 L

点评

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

使用道具 举报

36

主题

213

广告币

297

积分

初级会员

Rank: 2

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

, p4 I0 C1 ?! \' t' g5 T1 u4 a十分感谢!!!非常感谢!!

点评

缺少一个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
  O: @- D& a- _* _! g# R/ W十分感谢!!!非常感谢!!
! g4 f. p: N+ z& K- _/ y
缺少一个gethtml,用下面这个:* f/ w% G1 Q6 a% l
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    ) n! s$ ^$ u- j
  2.         {6 `; \' u: u, y8 z% B* D
  3.             string strWebData = "error";6 P1 L! H0 a/ }4 H5 f  F/ k
  4.             try
    2 N  T( G; D7 X! ]; k' e! Z
  5.             {
    5 ]; w' ~; ]6 Q: Y4 ~, L( e4 ^
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    7 A; J7 f, n5 i, }
  7.                 // 需要注意的:
    * w! X# \. Z- I  b. E" u
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 3 \" f3 ]5 l7 r( M+ P7 x) E
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 7 z8 o6 y# D; K+ |( w; w
  10.                 // webclient.Headers.Add("Cookie", cookie);
    " Z; Q2 u1 g9 B: |( M) F0 z4 Y* m
  11.                 //这样可能需要一些重载方法。根据需要写就可以了7 h0 g% `2 z6 o& N8 f' ]
  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)");
    8 f8 f- }, c5 G! V3 F
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");  P6 q1 k/ m9 L
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ) W+ N& T: s7 e! g% e# W4 U
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;  X1 C. g% l( l. p! r
  16.                 //如果服务器要验证用户名,密码
    2 |" _/ W9 y9 t2 R- l0 I+ V
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 1 Q  ?2 F* e# d7 R/ O- l, M
  18.                 //myWebClient.Credentials = mycred;
    3 V9 l7 q1 _' x/ A
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ! K, m& u; \( L" d
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    * y- }- d1 A1 S+ {& H" P7 o
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);1 c0 x$ l: R& P

  22. . W% z5 o  U0 T- ~% b+ B, v7 o
  23.                 //获取网页字符编码描述信息 / ?. ~. s8 a# O* ?4 L1 L
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    , y* h% i, F4 Q! C8 H4 L# C. L
  25.                 string webCharSet = charSetMatch.Groups[2].Value;0 z6 A8 G0 o* p5 D# ~" V9 G1 e  ~4 }
  26.                 if (charSet == null || charSet == "")
    3 ?: B$ K! F! P0 Q( T( _
  27.                     charSet = webCharSet;* {6 {3 N" F& y0 M, ]
  28.                 if (charSet.Length > 0)
    ) j9 e  S) t% E  r  H& M
  29.                 {
    * l1 p: H; p5 L
  30.                     charSet = charSet.Replace(""", "");3 t: V8 ]$ v: ~+ h3 X
  31.                 }7 D2 _" c! K7 J# J9 Z
  32.                 if (UseUTF8CharSet), {' c; u: Q0 H1 S8 i+ c$ t
  33.                 {
    7 P! Y5 E' }# `2 a; p. M
  34.                     if (charSet == null || charSet.Length == 0)6 M; K4 M( n8 A; ^! W
  35.                     {
    - k! T5 b3 Z* k* |0 r/ }- V
  36.                         charSet = "utf-8";
    5 a7 z" V. r: K, k& X. R) j  F% t9 b$ Q
  37.                     }
    ! D" R" n# O0 c" y2 X/ q
  38.                 }: O* C* B/ M7 B/ B
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default), V: ~" X% ]! D1 a$ h2 M7 m. F
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ) b9 r; T. \1 P
  41. - U" m4 b) ^7 T$ s9 i0 C% S2 @8 f
  42.             }
    : c! a# h( b6 H
  43.             catch (Exception)2 v3 `& C. Y9 |- c* W& q2 p
  44.             {
    ( X+ P; A) B' K7 `( n0 ^( y
  45.                 strWebData = "error";8 b7 c: Z. }5 p
  46.             }
    4 U& \& j% J8 f1 Y3 W" C2 Y

  47. ) X% k' F& j; [, z. P8 T% R
  48.             return strWebData;
    0 L0 Z+ G' R* I1 A. y' t9 v
  49.         }
复制代码
/ K  _& O" w9 j6 T+ Q0 X

$ {5 S" E1 a# [# \  j, Q: d
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-30 15:38 , Processed in 0.050388 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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