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稳定代理/住宅IP/ADV50打五折 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9861|回复: 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 抓取全站链接+ ~  {) G" s+ i
  2.         public static List<string> GetAllHref(string url)3 i& K# c+ J# Z: t% h* V& K3 E
  3.         {1 F7 u/ Q( j9 U7 o) M/ O. r
  4.             List<string> allHref = new List<string>();9 v& N+ r  `3 y; v9 ~# ~
  5.             try
    6 P- g8 w6 Z& i9 @" q& }9 _5 ~, f6 T
  6.             {
    ; y5 V. B  _8 E3 u
  7.                 string strhtml = soso.getHtml(url, "", true);$ y, p8 r. V, ^; W0 y( H, ~
  8.                 if (strhtml != "error")' {6 Q2 q" _& ?& H: M0 @+ Y
  9.                 {+ ]+ q0 C" P# @  I; y
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");% S' W2 H/ t5 Q$ [& x! f( a; P
  11.                     MatchCollection mc = reg.Matches(strhtml);( _$ x% S6 V: B: B" H' l8 A6 B
  12.                     foreach (Match m in mc)
    ; W; |  D* ]  s9 m0 E
  13.                     {
    5 w, w9 T' @) _
  14.                         Uri uri = new Uri(url);* S0 L( A6 c0 h2 N2 ?, y* P
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);3 ^7 M5 V- ^6 D. C2 e$ O: l6 M$ C" f9 M
  16.                         string fullUrl = "";
    5 g" D6 ^- r# z# u
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    5 T4 {  ~- a, ~( y9 `
  18.                         {
    ' z. }3 }  y3 ?4 K0 K/ O5 m
  19.                             fullUrl = m.Groups["url"].Value;9 t: V0 a5 x$ R* Z0 C7 Y0 l3 ^
  20.                         }
    ( [! W4 J6 Q1 z! S' s) R' }8 s
  21.                         else/ C9 V1 F0 X; T- N
  22.                         {
    : g3 [1 |1 e2 T1 i# W
  23.                             fullUrl = thisUri.ToString();
    ; Q5 P! c3 G9 r6 X
  24.                         }
    & M, E2 P+ A* R/ G. K/ F* {
  25.                         allHref.Add(fullUrl);
    ; Z) m( y3 m& W/ |  s9 T/ k
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);5 Y1 w- O% M2 ~2 I0 m
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);; L, ]" c6 Z2 R1 W; G: [: a% a
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    # ^9 F2 N3 V( t6 W4 T
  29.                         //Console.WriteLine("…………………………………………");
    4 v% M: k. f  Z) U8 I% \) @% v3 u
  30.                     }
      {& n( @, A9 |# @
  31.                 }2 ]' @; E2 P! G6 V" F' v" |
  32.             }
    + o' X, m  I  w; j
  33.             catch (Exception ex)
    " \2 v) [' ~. X, A- U
  34.             { }
    " V1 w0 n, S- P9 H, `
  35.             return allHref;$ U& _0 x1 M2 m. Y1 f. j6 E
  36.         }4 L! J0 T& f- ^# g: g2 {. b
  37.         #endregion
复制代码
# @% D0 j, ^1 Z. e6 n1 o' q

  o. e* D( r% t- U/ W6 S5 m# d

  1. ; F; b) o. z4 A

  2. $ [3 n4 z, c+ @1 Y' z3 v& G, p

  3. ' {/ V( {6 E9 N& x9 ~
  4. #region 数据去重
    " z5 c, q1 e0 `, v
  5.         /// <summary>
      H7 ~4 |% e) z% }( V
  6.         /// List<string>去重
    , e& m8 g+ q9 L" B3 ^
  7.         /// </summary>
    % _- W& O" H$ Y
  8.         /// <param name="list"></param>/ C* P; z. G& ~$ J/ Q0 _' b
  9.         /// <returns></returns>/ z% l& s4 k* d& [" m
  10.         public static List<string> getUnqueList(List<string> list)+ C: e: \( W- L( d) C
  11.         {
    ' V: `$ s( `0 F. m% ?$ _
  12.             List<string> list1 = new List<string>();& F5 v9 o; `* X0 x3 c
  13.             Hashtable hash = new Hashtable();
    0 F* |% |0 c& |7 i5 `
  14.             foreach (string s in list)
    + ^! Z) }5 H9 U3 b
  15.             {' y; w4 Y0 H; |  i, r, r, Q
  16.                 if (!hash.ContainsKey(s))6 N: A9 u& k; e+ i5 b
  17.                 {) O5 D" }, h' Q/ V
  18.                     hash.Add(s, s);
    1 Z& d, o6 @, A3 h# r
  19.                     list1.Add(s);( y2 I) N6 z& J
  20.                 }
    $ B! I5 o* D7 i6 t4 d
  21.             }
    9 ^0 P6 x* a# h! }% [! t3 Y1 I
  22.             hash.Clear();
    ; ~- y. @  s9 V5 `1 J7 [) W0 r
  23.             hash = null;% D) `0 f1 }; r5 d$ `. Z
  24.             return list1;
    6 U' |+ v" Q+ K" z- h. y" F
  25.         }
    3 `2 q; ~2 R5 Q; e
  26.         #endregion
复制代码

( O1 l' }( ~" T! Y
4 k+ `& \* P5 k7 m7 M4 [' T

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

7 b) `5 ]* k7 c& r! |& \十分感谢!!!非常感谢!!

点评

缺少一个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 e" j; M5 Q' s2 ]! i/ p5 E
十分感谢!!!非常感谢!!

" I, \- x" r' N0 j) I) S  r缺少一个gethtml,用下面这个:
$ G" ?  }/ v' J* J+ ]
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 * Q0 E- i1 [, M" p) ]
  2.         {
    - F4 c" `! N1 c9 \/ \
  3.             string strWebData = "error";
    & V/ s7 y1 g4 N
  4.             try
    ! O2 z6 {% M: S2 G2 f; i# _* P$ Z& ~
  5.             {
    ; u" w9 d% K- {
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    6 V4 X$ l& b* \) J! p4 v# `' E& o
  7.                 // 需要注意的:
    $ h) F/ L7 a" _( K1 Z) z9 {# Q7 [
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    1 o5 m5 |( f/ D% N% N5 {
  9.                 //这是就要具体问题具体分析比如在头部加入cookie + w2 S; B* e4 X% y( U7 g% J8 m
  10.                 // webclient.Headers.Add("Cookie", cookie); 0 T7 P  K' S7 l5 j: b/ t2 e7 W
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    - ~% F" n1 c: w% z; Y9 L3 @
  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)");
    # H3 |9 W9 s( s' Q* C. \/ A
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    7 U, H- a; x# T3 o8 Z0 [
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ; x& p  [) r: L
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    5 D+ ~; I& M0 ~- D& m8 P
  16.                 //如果服务器要验证用户名,密码
    # Y; z2 s( A; e* ?$ F* u  W
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    , p, P1 ]* ^% S4 j# ?  R/ n
  18.                 //myWebClient.Credentials = mycred;
    3 }6 ?0 X4 K4 C. u3 d( I, e
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ) o1 a. ?/ T+ y- S1 `3 j/ v" `
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);8 Y) ~, p$ ~) q; }
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    : L5 s  E6 N$ K8 U9 r/ L  k

  22. ' p# U) w8 W% G( U' E0 K
  23.                 //获取网页字符编码描述信息
    - A7 j5 {. [3 y9 ?
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    8 k, @5 L& n4 K3 e
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    6 }8 Y4 w) A9 `0 W; Y, _2 p
  26.                 if (charSet == null || charSet == "")+ ?. }; l8 b: c
  27.                     charSet = webCharSet;
    1 [' q0 b2 s3 o# D% T5 X. k( t
  28.                 if (charSet.Length > 0)
    8 e" u, f( a* z3 q. J' {1 h
  29.                 {
    1 ?: T* M; S, @' N
  30.                     charSet = charSet.Replace(""", "");! G" M9 ^) N. ?
  31.                 }
    0 g7 O" R8 F4 B0 V, B% s$ p! z
  32.                 if (UseUTF8CharSet)
    . [$ W1 R1 B  _2 [% o7 o8 G; i- s) Y
  33.                 {0 L3 H. N; m/ f9 {8 B( F0 K! |
  34.                     if (charSet == null || charSet.Length == 0)
    ; B) V/ z8 v2 o8 E
  35.                     {9 M) Z' h. k0 ]& Q& E
  36.                         charSet = "utf-8";
    - {! e5 r* O: D5 R! R
  37.                     }
    " p" j% e( l0 p: b- Q- y. |
  38.                 }& `- F  E# K/ W! Z" Q  l, ^
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default): z# Z1 W- H. c; A0 Y5 e# Q! O) K
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);8 D7 b" t) x/ f+ Z$ p

  41. 6 z' [7 A+ A8 g$ U  L0 Z. e
  42.             }& ?& y) g  L! w
  43.             catch (Exception)
    % o" Y# Q" `# t# Q- @
  44.             {
    9 G) S9 {* c& E" x* F$ `3 d
  45.                 strWebData = "error";
    # M" ~& Z7 s! @8 ]& J, ^4 K
  46.             }( G! ~+ S: _! ^
  47. 2 T% k( D6 _1 `, w- P
  48.             return strWebData;$ I' |0 M% N' {9 A6 R" V* D+ u5 r" [
  49.         }
复制代码
* U: e* C0 [- L

6 S6 ]# M7 M& a' }' o7 j
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-13 11:34 , Processed in 0.052151 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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