AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
⚡️AdsPower:安全不封号,高效自动化E.PN 虚拟卡FB BM不限额,短id账单户BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户提供TK企业新户老户、谷歌新户老户FB虚拟卡⚡️消费越多返现越多
最大欧洲Nutra网盟BA找量优质住宅/移动代理/高匿名/高性能原生住宅⚡️双isp⚡️适合跨境电商TK白名单老户|兼职广告可投
Miluproxy⚡️全球住宅IP代理Top 3联盟收款/海外资金下发/服贸结汇⚡比特指纹浏览器+云手机, 4.5折起T3NZU:定义应用网盟新时代
FB个人号源头服务商寻找顶级电商?AdsBranded等你!广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9679|回复: 7

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

[复制链接]

36

主题

201

广告币

285

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接* p* N5 b/ `# N& H2 q, g1 u
  2.         public static List<string> GetAllHref(string url)/ x4 _/ ?1 F: k3 c2 n
  3.         {
    5 ^3 M) F# M& g( e6 l' {% x; c
  4.             List<string> allHref = new List<string>();
    0 ^: Z# `) \  v$ H, s; F8 s% u. V6 p
  5.             try
    7 r$ J6 }  b, G. h  z5 ?
  6.             {& O& P2 l" c5 ]- R8 _3 w7 v
  7.                 string strhtml = soso.getHtml(url, "", true);. F- B4 ?- u, Z1 U
  8.                 if (strhtml != "error")
    0 I3 e  f8 Y3 E+ N8 ~  C6 R
  9.                 {
    " @4 `4 x5 Y* D+ N6 s( @3 c% ^3 \
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");  b) u4 a4 O& E
  11.                     MatchCollection mc = reg.Matches(strhtml);
    5 i% j8 \; l3 }. ?
  12.                     foreach (Match m in mc)  q4 N# i6 v; J. h+ ~! ?4 N
  13.                     {
    8 b! J4 L7 E7 T' }
  14.                         Uri uri = new Uri(url);: G0 R; P) r/ g+ r/ C
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    : H: V: |. c. ~: f
  16.                         string fullUrl = "";
    , W& G& }9 u" v( @5 {3 D; Q! {
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    : U% b3 T1 l; l7 F, I& r
  18.                         {+ @3 D- C) E! T0 e+ X0 C+ h
  19.                             fullUrl = m.Groups["url"].Value;6 v8 ~: I* q# l
  20.                         }9 R& Z( {$ i0 \) S! E1 }! j
  21.                         else
    $ P& t# K0 r' U. Z
  22.                         {9 f6 S, H  }& S% C* [2 y
  23.                             fullUrl = thisUri.ToString();
    + `: m  U4 O& J
  24.                         }
    5 F* l+ H+ l' _9 m7 z! x1 a
  25.                         allHref.Add(fullUrl);7 `' b6 g; l2 L3 n3 H
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    / v/ T5 V8 @2 v1 E
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);* ?& Y5 U% a6 h( j4 P4 [  i" I
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ! U  X& h. B$ x
  29.                         //Console.WriteLine("…………………………………………");! m2 O  T5 l: u" c: @( \5 Q
  30.                     }$ {9 L2 _9 {/ Y- ^) I
  31.                 }) U' ^4 c9 B9 ?/ E) W, E4 \$ P
  32.             }
    5 h. X& E4 @0 B" g, G& N, w! V
  33.             catch (Exception ex)/ k3 c+ m* w  v) X8 q
  34.             { }
    ( K6 p/ H0 m( [6 b7 v4 r
  35.             return allHref;
    , {2 v$ {$ X+ H
  36.         }! t& h5 k& B3 X! c
  37.         #endregion
复制代码

2 B* y; Z# w$ X: v1 w) b8 X- s& H. e5 x5 a/ N* ]9 _: z' V
  1. " X, N- i3 M+ S' P" _7 r0 Y- r: @. R

  2. 8 |7 H# ]! m% y% ~
  3. 9 N& g+ L; g# n) U
  4. #region 数据去重' T5 c, Y" }' z4 T% I
  5.         /// <summary>+ l# k+ Z- ^6 K. P1 Y, F" q# k
  6.         /// List<string>去重; }, e9 L7 u7 D$ _! ]1 o1 e# i$ H
  7.         /// </summary>
    5 {; X% w9 ^# t' r7 K( X( W% q7 C
  8.         /// <param name="list"></param>
    , ?. v& s$ b7 b; O$ x+ a# d
  9.         /// <returns></returns>
    * ^' E. R( Z6 G3 S) B. S
  10.         public static List<string> getUnqueList(List<string> list)
    8 @% }+ j& P  C* N/ n
  11.         {
    1 _6 B1 u5 o% U0 }( z
  12.             List<string> list1 = new List<string>();
    $ U5 [7 B& j  Q$ K
  13.             Hashtable hash = new Hashtable();
    ( q& p* j% L7 j9 T/ L
  14.             foreach (string s in list)0 P4 W5 ^6 V+ E- q; [7 G
  15.             {9 g+ Z4 Q( C2 M7 ]$ P$ U- i% S
  16.                 if (!hash.ContainsKey(s))
    : x7 B) D; h6 U& B
  17.                 {
    ) ~% {4 t! ]2 {- k
  18.                     hash.Add(s, s);! n! a5 _: m7 ^7 P9 X: K  D
  19.                     list1.Add(s);
    1 b' v" T7 {9 j9 y3 C
  20.                 }
    ! _8 ?$ Y2 _" i9 ^2 K6 W
  21.             }
    $ M! z, z1 K$ Q$ I! Q* q
  22.             hash.Clear();
    , C8 F# e8 Y9 I( g5 h
  23.             hash = null;/ g) Z3 `" D0 @+ S6 g- C
  24.             return list1;
    - h  w, I; U; _, Q0 w
  25.         }
    ! W( t) R( R4 u/ F9 f5 j
  26.         #endregion
复制代码

+ r: w1 @. t; M
; S" i' j" q2 Q8 ^" o# O

点评

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

使用道具 举报

36

主题

201

广告币

285

积分

初级会员

Rank: 2

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

7 p  A% D* }; N+ j十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:209 G- J, M4 f' Z5 E7 t2 P
十分感谢!!!非常感谢!!

( G8 h& p. x$ P9 E缺少一个gethtml,用下面这个:
- Y1 W, v# p4 c+ S$ @. `
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 5 J) p1 {8 C5 c- Y
  2.         {
    8 u$ R$ W( f6 I5 @
  3.             string strWebData = "error";
    , O* Q' f  K/ P! p- U. X
  4.             try" _2 T6 d- ]9 E4 e* l/ H
  5.             {
    6 X5 u1 l9 w, X3 n6 U  z
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 9 o6 J- w* ]8 @( y- R
  7.                 // 需要注意的:   E& m4 w& W! S6 H+ b& t
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    $ W4 t% ]2 a- Y$ c
  9.                 //这是就要具体问题具体分析比如在头部加入cookie : S8 ?8 i# W7 D: U) v8 A: J/ F
  10.                 // webclient.Headers.Add("Cookie", cookie);   b  A, J! `' ~% a* {: J
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    9 |! N% ^& b+ h8 M: X$ F: A5 N- c! B
  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)");
    5 {  X6 S5 b$ V# i) Z/ n
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    % R% C) d1 z; K0 N& q6 ]! U0 j
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 8 ~9 d4 J; N! V1 n
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ' W3 f6 u9 U' F7 D( d
  16.                 //如果服务器要验证用户名,密码
    5 J$ ~0 i" R7 d: l6 K% t( a4 Y* g
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); $ n9 G4 B! S1 O3 `
  18.                 //myWebClient.Credentials = mycred;
    : |, A! _* w( Q
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ( W3 o# o( D2 p
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    & @* y  t) o3 \/ b8 J3 ?) `9 f1 j
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);( w0 i. r) R& L( N# S( h& X' m

  22. 6 o  y  _0 T4 F
  23.                 //获取网页字符编码描述信息 4 b6 N. K/ R8 k& O- ~  X+ K6 @+ A, n
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);. {5 E; q7 a" l3 K% G' m
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    # K7 i" X: |2 X6 `# ?
  26.                 if (charSet == null || charSet == ""): M; C' t9 y* I" `" b
  27.                     charSet = webCharSet;) Y: _* a7 d8 z! e+ W
  28.                 if (charSet.Length > 0)
    * W1 X. _5 r) C# w( Q+ f
  29.                 {# ^  x3 M3 j) o6 N+ [% l7 w% l  G
  30.                     charSet = charSet.Replace(""", "");6 L2 r! X' H$ b# @2 A: ]8 x: ~
  31.                 }
    * l- r) @% ^. D2 j! i2 ]& ^
  32.                 if (UseUTF8CharSet)% N# {9 }1 m+ r3 T
  33.                 {) Q8 P1 O( I6 x9 N2 U( |8 I
  34.                     if (charSet == null || charSet.Length == 0)
    # _2 G" E, J5 i; t+ u4 s8 V
  35.                     {7 U% ?' X2 h* G1 L  G
  36.                         charSet = "utf-8";
    $ C' _, v9 b9 ]+ w7 q
  37.                     }) W4 V& L  J* ]9 A; r. G0 u
  38.                 }
    2 r  ~3 K) [2 F
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    - n1 z1 l  c4 ~1 J: n
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);) I+ L: A9 k- s8 D# q" a

  41. 5 h5 H9 G+ I$ u
  42.             }
    / B  D6 y, D0 ]; O  L
  43.             catch (Exception)
    + k7 ^+ B: x/ Z1 m8 g
  44.             {
    ( @# e' ^1 o1 n
  45.                 strWebData = "error";
      z7 U$ x5 q* x% m
  46.             }* ]7 G. |( }/ N8 ]7 ?: z
  47. ( d, y5 u: E8 d# M
  48.             return strWebData;0 \' O* H/ ]% B" ?
  49.         }
复制代码

9 Q  U& V! [( B6 X( h: m: V; N2 E5 S: U5 l# p# s
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-5 09:24 , Processed in 0.058458 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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