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代理各种主页、账单户、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%,国内持牌机构   
查看: 9871|回复: 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 抓取全站链接
    , F7 S& o9 [" h( h* v2 V
  2.         public static List<string> GetAllHref(string url)6 \1 W4 o& k" Z( p( X
  3.         {
    4 k: B( e6 k6 S: |( |
  4.             List<string> allHref = new List<string>();
    3 r0 Z- z# X9 l" [6 X. I
  5.             try) \8 P: D) `* l" i9 v
  6.             {
      |' {, V" `7 {# S  d4 z, h( C3 W
  7.                 string strhtml = soso.getHtml(url, "", true);  P! J# i' a5 u8 @
  8.                 if (strhtml != "error")
    6 x+ V  F8 j/ ^  a
  9.                 {7 C( E7 ]3 ]: G. A1 |5 _: S
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    6 X, F- v3 l" f/ A, x0 B" R
  11.                     MatchCollection mc = reg.Matches(strhtml);
    0 N# \  n$ q- X  M! A6 o
  12.                     foreach (Match m in mc)* U; w' C  C- x1 v- d3 {
  13.                     {# p- e+ H- v8 e7 O3 J% X& F
  14.                         Uri uri = new Uri(url);
    ( A. F6 ~- g# R# I- p/ A3 J
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ; m# F7 h) Q3 w% U" s" l
  16.                         string fullUrl = "";7 }% `1 Q0 D( ~, `; x6 b
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    7 o7 l+ f/ I0 e( m: e! M
  18.                         {
    - f" R1 a( X$ p! D' Q
  19.                             fullUrl = m.Groups["url"].Value;; }) f: x1 y5 ~5 y6 s4 Y( k
  20.                         }4 y7 L7 @, Q, G
  21.                         else8 f1 l5 Y2 t& C/ C
  22.                         {
    5 D3 _7 g8 ?; G# \0 y
  23.                             fullUrl = thisUri.ToString();
    ! w5 J6 u9 k( Q. b+ q, j. R$ g- J6 E
  24.                         }
    $ [) O: i6 I' x3 `4 \
  25.                         allHref.Add(fullUrl);
    - p) C0 X  o$ K6 ~2 v: K; `
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    # n  J. w- a4 h" `$ w# n& w5 @1 Z+ j, ^
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    . K# z3 U7 t7 R. i
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    9 z9 s& {- |# C2 Z) z
  29.                         //Console.WriteLine("…………………………………………");0 d! `4 \- p( W
  30.                     }- K- M+ Z! P/ H% H
  31.                 }
    * D% p4 _( l2 X4 ]! H; ?3 Q' u
  32.             }! j( c: S7 c7 \: v4 M
  33.             catch (Exception ex)2 v% U& U7 I* {0 d; Z& B  d& D
  34.             { }2 q1 K, ]9 N& e3 o$ d
  35.             return allHref;
    9 P6 J- ^  i0 t0 g5 U
  36.         }
    $ Y& R9 e& h# q1 K8 J* K. U
  37.         #endregion
复制代码
  _9 c8 _' s& O' P+ O5 U) m
( D: ~/ b3 P; `6 d, Z
  1. - Y% C& S) \/ _. F0 Q+ |( x  w
  2. & h! k( U, s" _& _( d

  3. 8 l& V) ?1 R0 }' x  e0 j* \: \
  4. #region 数据去重  r+ s/ h+ I8 \% b2 I
  5.         /// <summary>% A- P; L1 b1 b
  6.         /// List<string>去重
      W% h0 S' l8 h& F0 A2 p
  7.         /// </summary>9 q; x2 M0 w  B# F4 ]7 e6 k
  8.         /// <param name="list"></param>
    7 N$ j5 ?0 q0 F* T$ L" c
  9.         /// <returns></returns>3 t8 t- D; g% H
  10.         public static List<string> getUnqueList(List<string> list)
    6 Z* }% _" @$ p# E
  11.         {6 F6 b1 T% |1 f7 C( ]
  12.             List<string> list1 = new List<string>();" P: Z0 S: ^* y3 \5 m+ k- h  n9 r
  13.             Hashtable hash = new Hashtable();/ g: r- q& U  K- D$ h6 P) W
  14.             foreach (string s in list)3 O5 s* T' u& `  r" v0 `
  15.             {! y( M4 p# T6 h, A
  16.                 if (!hash.ContainsKey(s))
    2 U  f& G" V" ^2 |6 I# p: Z' }
  17.                 {
    ! a. I# z/ b5 Z+ j
  18.                     hash.Add(s, s);) L2 N- h7 i0 Z, }: [
  19.                     list1.Add(s);6 M$ N+ Q4 T0 ~1 I# @9 q/ j
  20.                 }4 i5 }- c4 C8 Q9 B9 |! B
  21.             }6 d! p: s& ]- x" t$ c
  22.             hash.Clear();
    % q; W, a& `* Y$ r6 T1 G# ?1 {" ^2 `
  23.             hash = null;
    ) u, E. t1 _7 g- V" |# D' L
  24.             return list1;
    , l7 L8 \4 F! Z6 w
  25.         }
    5 C) y' F& V; Y$ ?+ ?
  26.         #endregion
复制代码
/ _8 S9 L$ Y" y' @# s6 h1 l

+ X+ `- f- L' t3 g

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
9 x' {* G  g  |& O8 ]' G% {# {5 D' 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
# |& L- G/ t3 _) f2 P十分感谢!!!非常感谢!!

1 r0 W0 y( b" H) A) L% n8 H9 h$ x缺少一个gethtml,用下面这个:/ r" t0 Z8 C7 l: o, A9 c+ C
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 1 I7 I& {0 K  T/ d7 R$ Y6 y
  2.         {! c3 ?+ H- @% W; b$ K& F
  3.             string strWebData = "error";
    ( E% f2 D- }. D
  4.             try
    " u. q; Y6 Z3 i$ J
  5.             {
    6 {- Z; e  E( t
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 6 k# r. P% D7 `9 }8 v9 Q
  7.                 // 需要注意的:
      s: ~1 h' X% u, k* C- l0 K
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等   f- I" p* H- \  J! w- `( h& }& e
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ( \3 }/ X: T0 F) t9 J
  10.                 // webclient.Headers.Add("Cookie", cookie);
    + E: s. i$ b: w/ H
  11.                 //这样可能需要一些重载方法。根据需要写就可以了  o. a0 W& k/ P8 h) s6 l3 U
  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)");6 `) K* T1 I# q9 P& Z
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");0 A/ |# W' j# y" X! o  y
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    - e9 r0 _7 I# u/ C" }: ]- M/ b8 P$ N
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    / o$ h- k7 X* w' \7 f0 n3 l' M8 T# ?
  16.                 //如果服务器要验证用户名,密码
    ) x, B0 X! j5 R
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 9 c% O5 E' y# \' y8 r
  18.                 //myWebClient.Credentials = mycred; / o, t$ x) P7 J. [( J3 @
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 2 H/ t. V7 P: X8 p  G
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);6 R# F0 b8 b* G8 I& J* u1 C8 h
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);; k+ f  Q5 W. p' m

  22. ! G$ \( W: }( T
  23.                 //获取网页字符编码描述信息 + i5 S$ M2 t* o( c
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);' k/ e) J/ `% T. R1 ^) o9 E" ~0 r, z
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    : |2 a* d7 ]8 t. s" J, g( d
  26.                 if (charSet == null || charSet == "")
    3 x+ P2 C5 ]1 e; y3 ^6 k
  27.                     charSet = webCharSet;
    ( [& l9 M* S5 f0 D
  28.                 if (charSet.Length > 0)( G7 h- z' L7 [  W7 ~* [2 u
  29.                 {
    7 S) v) z+ w* i6 d) w2 t! H
  30.                     charSet = charSet.Replace(""", "");
    ' {: D8 l/ y( z/ y9 w! A
  31.                 }1 _4 N% O3 Q* v9 c# j9 {
  32.                 if (UseUTF8CharSet)
    ' M0 Q& E( a& g% ~0 T9 ]# b
  33.                 {
    . k; B) S) Y- \/ w
  34.                     if (charSet == null || charSet.Length == 0)* A; I& h9 Z( w4 x
  35.                     {3 E- ?; q6 m# n
  36.                         charSet = "utf-8";
    " C/ k4 e+ C8 ^: ^4 B
  37.                     }
    ; N3 Q: ]3 g4 G5 ~; T0 ~0 x5 m
  38.                 }9 v; Q; O4 H: a& x( Z, h2 \; V. d: l
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)- e' l. Q$ w1 P. J  G3 W
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    4 J* o% n" i: p+ z6 |9 B* {& t# f
  41. / e6 `; _, S. G/ }7 a  A
  42.             }/ k; c5 ^, w& U6 z0 w5 S" h0 m
  43.             catch (Exception)  H1 G1 |9 n% m# Z) |
  44.             {! x7 y8 A( T5 y' g/ Z
  45.                 strWebData = "error";
    6 `' W# |5 S. u0 F' }7 q+ h
  46.             }
    ! R- O/ Z) |4 [3 e$ n/ h* Q" H3 k, A
  47. 9 H9 r7 K# Y3 o; D
  48.             return strWebData;
    / f+ y6 r7 |  Q' w# l5 X+ P) j1 O4 D0 ]
  49.         }
复制代码

9 X8 G6 ?$ h7 h$ M4 J3 C0 i# l; Y7 k' ^- J
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-17 06:12 , Processed in 0.051043 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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