找回密码
 立即注册

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加白户联盟收款/海外资金下发/服贸结汇✔Taboola海外户源头9千万住宅IP-低至$0.3/gb✅静态$4/ip
广告位出租虚拟卡返佣1%,国内持牌机构  
查看: 10235|回复: 7

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

[复制链接]

36

主题

215

广告币

298

积分

初级会员

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

使用道具 举报

2

主题

1487

广告币

1829

积分

高级会员

积分
1829

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    7 H2 N9 o3 ~" K7 i# h1 I
  2.         public static List<string> GetAllHref(string url)- m0 e8 q5 t) s; r3 h
  3.         {
    ! z" l. v9 O8 J- \
  4.             List<string> allHref = new List<string>();
    ; ?9 b0 g. o( f; M# C1 }* P' `# h
  5.             try" n% _% O" K+ b0 w) r2 X
  6.             {; i. G! U) ]/ d9 g; p6 V
  7.                 string strhtml = soso.getHtml(url, "", true);0 n4 i4 h5 z* r( V6 A
  8.                 if (strhtml != "error")! j5 N4 L" P# y) v4 W, }) i
  9.                 {
    4 }' F5 H: }- U, X2 u. x
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");/ j/ @1 n$ R; u6 G
  11.                     MatchCollection mc = reg.Matches(strhtml);: r4 u$ ^- v) `/ j
  12.                     foreach (Match m in mc)
    4 p. z+ U! t; h/ i
  13.                     {
    - e! S& R9 e  W
  14.                         Uri uri = new Uri(url);9 E: k$ A6 k; M7 \4 R0 s9 `9 W" g
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ; W% |) N( |. n2 Y% }8 n, O0 k
  16.                         string fullUrl = "";, c8 f& \) U9 X; G
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ! {! }" C0 h: i. k8 j6 u
  18.                         {! t$ j! X# \: P- J5 Y* g
  19.                             fullUrl = m.Groups["url"].Value;+ J2 K+ Z5 M- q4 O! M
  20.                         }3 B& w. ~3 g# j: a- |+ A
  21.                         else3 h) C1 ]" F, L# q  T
  22.                         {) a1 a0 @" p, B+ U' I. X
  23.                             fullUrl = thisUri.ToString();
    0 \" W. l. }2 ]& K5 V
  24.                         }
    " R" J2 \6 F0 M. T! U, B% h
  25.                         allHref.Add(fullUrl);
    & E; r% R: |$ D- D4 \2 ^( q2 z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    0 D$ W- T* x2 s0 b$ X7 W
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);1 ?0 C, I6 f8 P) ^4 w" t9 b
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    0 B$ K; t3 i- v  `* k( v: ~3 c' o
  29.                         //Console.WriteLine("…………………………………………");
    * z- v7 m- l: Y9 f- g
  30.                     }' p% I! ^( n1 X$ b% R( x( d4 I
  31.                 }0 d4 S  y6 h. R9 J4 }. I3 U
  32.             }
    ) \' _: B# Z# W
  33.             catch (Exception ex); t; f5 O: Y8 {' N! X4 c
  34.             { }" E' E% @: r2 w; u# F8 t7 M+ D
  35.             return allHref;" R5 M, U' S4 v, W
  36.         }) N1 g. l% b, c
  37.         #endregion
复制代码
& \/ ^( c9 b" U: M7 ~7 a: d
, x8 a( B- }# i
  1. ( y5 p( _% r; s. H7 i
  2. 6 O0 j) S4 \' |% t
  3. ! p9 i0 N1 Q: y! l$ l2 S
  4. #region 数据去重2 t( j' J" p4 I* u" `1 N% C+ G5 @
  5.         /// <summary>$ g: B" |! C" N3 V' g. S7 S# S
  6.         /// List<string>去重
    + ?% R7 m1 b4 B& B
  7.         /// </summary>6 s1 `1 J$ T2 E+ h; r6 @! G  z
  8.         /// <param name="list"></param>/ ^1 v4 G  S3 T; F3 Z
  9.         /// <returns></returns>9 M7 \) k$ B9 u8 B0 Y
  10.         public static List<string> getUnqueList(List<string> list)% W& `1 X( a  k+ k
  11.         {3 E. m* {: d) n2 h
  12.             List<string> list1 = new List<string>();& W& G& k6 x5 T9 Z- G+ k
  13.             Hashtable hash = new Hashtable();
    7 c7 R' k8 U$ c* O
  14.             foreach (string s in list)& [7 q' R5 J  {3 {" ?
  15.             {# l1 A1 H; }4 H9 R- E% g& b
  16.                 if (!hash.ContainsKey(s))
    + m2 v0 w& B3 c% r' }  }1 R
  17.                 {
    $ u5 W6 V! y# S+ {
  18.                     hash.Add(s, s);
    ; v, b% p) ]. n2 ~
  19.                     list1.Add(s);3 W% I  W/ Y5 ?  W+ w/ s
  20.                 }
    ' V$ c5 ^3 S8 S2 h3 A6 u( c4 B
  21.             }
    4 ^7 v! r8 Q- N! I: s
  22.             hash.Clear();
    ' I+ N9 K. m; a" X# d
  23.             hash = null;5 d" O; z5 n7 m2 Y+ A3 u, V
  24.             return list1;; V+ }. x1 M  g: |* v3 x4 q, K
  25.         }# y$ L1 b  K  N) |# ~( u
  26.         #endregion
复制代码

8 e; r( V' v7 j, W7 ^3 E& L7 p; p! s0 j7 Y

点评

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

使用道具 举报

36

主题

215

广告币

298

积分

初级会员

积分
298
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
2 @% g: [/ L. `+ F. d0 ]
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1487

广告币

1829

积分

高级会员

积分
1829

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:206 n# r) a& E$ X7 G' \# [4 z
十分感谢!!!非常感谢!!
) ^0 a; h' I% X: Q
缺少一个gethtml,用下面这个:% U- Z5 N' N, i6 I
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    7 ^. v7 L% G6 ~, N
  2.         {$ X4 B( ^8 M1 ~, T4 `: \7 i) U) c$ e
  3.             string strWebData = "error";* w. P. f/ u0 G8 X( Z4 G5 s) ~0 Y/ S
  4.             try
    ' ]7 {" a! _  ^: a; V) t, x
  5.             {! @" N/ Y! I# j2 ], S* ^3 H' h0 w
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ' B8 [9 t/ L. g, k7 x
  7.                 // 需要注意的:
    3 t/ X% D( E# u3 }& k4 i
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 * e- W# |: N: P" f' K
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ; a% a1 d7 {% p2 x% O
  10.                 // webclient.Headers.Add("Cookie", cookie); ; {% b" K( S. n1 t! |7 _
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    , ~: s7 S9 ^* t$ @) a
  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 h% g" G$ `  ^% U3 K
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    & @+ C, s2 {7 {9 y" e
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 4 F; ~( @* ^  A: H& Z: D1 e1 E
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;; Y' N8 y! h! y/ [
  16.                 //如果服务器要验证用户名,密码
    $ J# t+ A8 E0 d+ \1 c# Z
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ! m4 @/ M" m* T$ N5 b
  18.                 //myWebClient.Credentials = mycred;
    7 l: K; f3 S' i
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) . `6 e9 `' H# ?; ]( i" L
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);' l1 U& E. |# r. [' G+ }
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);( \& }3 O. Y; D/ d

  22. 0 _0 I6 q" F8 W* m) V) I
  23.                 //获取网页字符编码描述信息
    ; h. M: F& e* z7 ?5 N# x) O+ w0 O
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    $ ]8 R$ e( [: X' m
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    : O" h% U( [0 U4 x' }( @( }
  26.                 if (charSet == null || charSet == "")- I" @" P+ y/ V& u6 B5 T9 ~+ i
  27.                     charSet = webCharSet;
    & @) A8 l/ K( j, g) K
  28.                 if (charSet.Length > 0)
    ! a1 V% I0 ^, l2 i3 K
  29.                 {
    + }7 L9 M" C3 p' d: C
  30.                     charSet = charSet.Replace(""", "");: b, J5 b: T! A! C, j; Z( M- c5 Z
  31.                 }
    5 P8 j4 U7 D2 d/ `/ O4 M: b$ U
  32.                 if (UseUTF8CharSet)# n/ {6 E/ \8 o4 @9 q% q) n* D" o
  33.                 {
    ( \! L. E2 l: S, q) v
  34.                     if (charSet == null || charSet.Length == 0)/ G2 {# a; z- }- u& \- @
  35.                     {# w9 B5 O( J) G3 o
  36.                         charSet = "utf-8";. w$ @( L3 I2 J$ x
  37.                     }
    * y: o5 K5 G& _; {* k
  38.                 }
    9 ~+ f6 `6 ?8 Q/ U$ x- w
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)! w8 z) s* e3 @5 B5 g
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ' K( g0 O  `9 T7 s  |

  41. ; V- W  b$ r, H7 _  @  F
  42.             }
    ; A! L! a, E) V, k' F( G) u3 j
  43.             catch (Exception)
      H2 O0 y1 P; A5 N
  44.             {- `+ S' `1 N  o/ r& ^# p' _
  45.                 strWebData = "error";0 ~7 e- X8 j% v. G* Y% {6 O/ R
  46.             }8 k: z* \$ i0 W* Z3 v& N7 l3 D
  47. 9 ~1 D( I& w7 _
  48.             return strWebData;
    ! }% p7 R; `$ {2 L2 j% U' O) f
  49.         }
复制代码
1 z6 [: c' I0 E1 L/ W; ?; _2 w
$ a; Q- P7 l- R: E# v
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-20 11:16 , Processed in 0.090988 second(s), 32 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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