找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
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企业户源头最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审GG,FB,TK, 欧美源头, 欢迎合作❤️
FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇⚡️Spend.net — 美元卡仅需$0⚡️✔Taboola海外户
广告位出租虚拟卡返佣1%,国内持牌机构  
查看: 10193|回复: 7

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

[复制链接]

36

主题

213

广告币

297

积分

初级会员

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接9 W% b; d: l1 G" P$ E
  2.         public static List<string> GetAllHref(string url)
    5 h, O, `* x, l3 e3 F# z# }
  3.         {, j# Q# O8 t& V$ G' S% K: }# n
  4.             List<string> allHref = new List<string>();
    ; J2 }, B, [" [" G8 L
  5.             try
    9 r8 k/ U8 I: @
  6.             {5 D  |6 e* a8 E* _* @+ {5 w
  7.                 string strhtml = soso.getHtml(url, "", true);8 b6 h/ E6 i' b  K) z. t& U
  8.                 if (strhtml != "error")
    , P$ I+ ]; N# T  J$ x" _
  9.                 {
    2 e6 ?. v0 W; {, ~' R* Q3 c
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");+ g& Y. T: s, h* D' ?
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ' B( e2 Y3 n! W' T- ?
  12.                     foreach (Match m in mc)
    " M( }) p7 O& S) ^: m
  13.                     {
    5 Y! o6 L/ G. U. S" o: W, X
  14.                         Uri uri = new Uri(url);; F; M+ B' z( O$ q
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);7 }* p  @+ N2 V- N9 u7 W1 _
  16.                         string fullUrl = "";
    6 k1 H+ v$ ^4 {  O" V$ k$ @0 o5 D
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    5 C: y# r( ]" W+ Q+ O3 p
  18.                         {
    7 W+ }) q& T; I. |& q
  19.                             fullUrl = m.Groups["url"].Value;
    2 E7 ^4 o' G9 E8 x2 u. w% D
  20.                         }" q! O$ p$ Z! [& c; i- K) d
  21.                         else. K$ W7 c8 a2 j- C- B9 H) d6 S2 t3 I
  22.                         {1 o1 B& r; D- o2 J8 _3 i4 {  R
  23.                             fullUrl = thisUri.ToString();
    0 b0 ~+ ^  ]: B8 J& E- e( Y. C( V) d
  24.                         }, O  y( ~% H$ X) t+ J4 A
  25.                         allHref.Add(fullUrl);
    ; Z0 m( m6 g/ R8 w. h3 A
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);& t' [. @. `: s0 n+ J
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    3 M" B6 ]) C- {4 W
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    $ v4 ~. H# `% l4 i
  29.                         //Console.WriteLine("…………………………………………");# e- Q; V6 b' {+ ?3 g2 P* @
  30.                     }" S& t- C" e$ |( @% |% X% S
  31.                 }" \4 ~; x1 b0 H* P
  32.             }
    5 C) q4 `$ b; R. Q$ b) S9 C$ d
  33.             catch (Exception ex)
    3 d8 U$ g: J5 X$ I; ?
  34.             { }: s: m1 R, Y% L! d- y, _# H) P
  35.             return allHref;2 K, t7 B7 ~) T$ ~. @
  36.         }1 L. j. A5 e0 [' B( V* C
  37.         #endregion
复制代码
4 r" s! y4 p+ I) W' y1 i
$ E( }( l; i7 B8 I: O2 K/ c

  1. 0 G/ c% d5 u, l, _  |" R
  2. , r3 C/ r+ c5 c5 J2 n6 y
  3. ; |# g! F  o$ A4 N! R, j+ v
  4. #region 数据去重, [% L7 N% R6 R3 w4 ]+ A
  5.         /// <summary>" ~3 e7 H. k7 B" w, S6 e: c+ y
  6.         /// List<string>去重8 D4 h8 X% N6 j0 S4 @
  7.         /// </summary>% e& l# q( L& B3 |0 [' V) t. ~- L
  8.         /// <param name="list"></param>
    , C6 k. _  b) r0 B; A; x4 L
  9.         /// <returns></returns>" k2 `6 v. U* `/ `  a# Y& R; K
  10.         public static List<string> getUnqueList(List<string> list)
    2 Z4 X" R" p, d/ g' U7 _8 v
  11.         {5 S) Z0 m7 g, b& c# Z  r8 e
  12.             List<string> list1 = new List<string>();% `" @3 B0 U- ?7 h9 \
  13.             Hashtable hash = new Hashtable();
    ' ~' S. i, k. O! X
  14.             foreach (string s in list)! q& O( v5 G" {* b$ z
  15.             {
    ( B1 u, _% ]6 d2 X0 _  R* V
  16.                 if (!hash.ContainsKey(s))+ ~' X; U) d3 L* V9 B; W
  17.                 {+ S) l1 m( Z& u+ P0 `/ Q! c# z8 i
  18.                     hash.Add(s, s);
    5 }( j( ~/ j4 X4 Z( R) u
  19.                     list1.Add(s);9 |6 V2 P1 X9 F8 N+ [( C
  20.                 }7 E1 ?1 G! A# B5 [  E
  21.             }/ x- \" s. ?0 P3 s, b. a
  22.             hash.Clear();" w" k% u0 I5 `: `4 k( l# E
  23.             hash = null;3 K; b( t2 O9 L3 [3 T0 |5 ^
  24.             return list1;
    # R& n- C3 s" T% J% s7 p
  25.         }0 H1 L1 q8 o% ^3 g- n: K2 n
  26.         #endregion
复制代码

( Z+ l' Z9 J: j/ e. w, e, X  o4 s( X! R( @

点评

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

使用道具 举报

36

主题

213

广告币

297

积分

初级会员

积分
297
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
( a3 n% y2 _+ c  Z
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:209 i. V3 s  {+ W6 q+ p* z. `1 N
十分感谢!!!非常感谢!!

5 x( m3 S4 `1 g4 C. S缺少一个gethtml,用下面这个:
0 L4 K. A4 z' a/ w/ b/ u: E& i
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    / O, P9 w8 o5 ]: P; c/ s8 V8 v
  2.         {
    2 _9 r  ]" ^8 ^2 E
  3.             string strWebData = "error";
    5 x3 [5 v' i: i- _
  4.             try
    * E7 g! w" l2 f. _, W- u
  5.             {
      S2 c- J' |3 i$ C
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    , v+ I$ u* N' g  s
  7.                 // 需要注意的: 2 P" n4 |& l2 _5 {! Y
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    # c9 l, q0 x* v! S# L
  9.                 //这是就要具体问题具体分析比如在头部加入cookie : A6 g% O$ ?/ ^7 y* c
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ; V- {0 z% l  ]! p! W! Y/ j
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ; m0 O/ p# |% W9 B* X. Y. O
  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)");+ N/ k" E- Y, _+ T8 \6 ~
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ; i5 ~# `( c# U5 q+ ?. @% \" [
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    , |; B9 d$ N- y' O' |4 |+ b9 ~) l
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    8 k  Y5 x/ X: x6 |# r, {2 @6 W
  16.                 //如果服务器要验证用户名,密码   w  p- ~! \" h- c" j  x
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    # f5 S/ K% D* r; f2 A* K
  18.                 //myWebClient.Credentials = mycred; # g  d+ r8 D% p
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) $ }. A& p/ A/ A1 |( m0 X4 ^
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ) H! W& N  y2 r1 V0 \  _7 z
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);2 Z6 L- F' l' v7 w7 \' h
  22. - H5 R; g2 C' u8 @9 m
  23.                 //获取网页字符编码描述信息
    ( G( G4 @, t6 {" D. Z) h  |& G
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);$ A# e9 S6 r* e
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ( d% G3 I2 j0 p0 U  S/ o- y7 ?
  26.                 if (charSet == null || charSet == "")" N7 @: _  @# W4 X
  27.                     charSet = webCharSet;3 J9 R- z" v6 q( J, p9 g
  28.                 if (charSet.Length > 0)5 w1 l" e/ P0 x' r. z; A
  29.                 {
    8 F0 B, x5 B. |( f0 u* ]
  30.                     charSet = charSet.Replace(""", "");
    . ^6 C: h8 K: ?/ E
  31.                 }
    # S, |5 Y  s/ G+ \- v! N
  32.                 if (UseUTF8CharSet)
    3 A1 w# n  V& |' B8 w8 `' J! k7 u
  33.                 {5 X) I  a$ G" O! L. G
  34.                     if (charSet == null || charSet.Length == 0)
    6 R* H: I' K  ]: b% ~; ^8 J
  35.                     {1 {, C3 R" \$ ^9 ?7 V- q: T/ C
  36.                         charSet = "utf-8";, B# n; Q' y8 C3 R, l4 b2 T
  37.                     }
      j3 m, U% }# M& Y( l
  38.                 }8 Z& {1 N5 D" a
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 M8 z+ e0 J: h% |! J0 X9 j
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);7 |" [+ n$ k, b: ]

  41. 6 z. b: r0 q7 O! u1 a! [
  42.             }5 C& i& [: C4 [& ~
  43.             catch (Exception)
    ! p& z9 Q* ~; Q4 u' t! }% B
  44.             {+ s! d9 E  Y) N5 i1 d! A
  45.                 strWebData = "error";4 `/ b2 I, t( `& u" c
  46.             }
    + e) `4 Z" ?( a; C0 F; y& \
  47. ' ^! j( Q6 h1 L, w
  48.             return strWebData;6 M0 `( O! K* _* ~: u8 e4 A
  49.         }
复制代码
2 s$ b# Y% |6 X7 d0 e
3 r6 \, ?' o5 n! l
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-15 07:14 , Processed in 0.074020 second(s), 32 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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