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+ 地区
跨境债务催收/风险代理广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9844|回复: 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 抓取全站链接
    * [$ r; \. _# O0 D
  2.         public static List<string> GetAllHref(string url): t- `8 M4 p2 r& T
  3.         {. T* T& U- ~+ J+ S. m
  4.             List<string> allHref = new List<string>();7 i: w* g1 k+ M  n3 @5 a
  5.             try, \1 b# {8 E* Z2 k7 W, S6 ~
  6.             {
    & W/ }* f1 i8 T& {) S
  7.                 string strhtml = soso.getHtml(url, "", true);! f7 Y' ^  D+ T6 o$ s1 j  G
  8.                 if (strhtml != "error")- v: P# g, F# t/ d+ R- i0 D" y  G- Y2 x
  9.                 {
    1 h. H' p6 E. S9 B
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    & s2 z* h: [' T$ D, T' F4 \
  11.                     MatchCollection mc = reg.Matches(strhtml);7 V+ ^/ ], m- V8 D1 m2 H9 e
  12.                     foreach (Match m in mc)
    * @3 Q6 C5 b; @- p( M  F
  13.                     {7 Q: s" D0 n5 n4 a
  14.                         Uri uri = new Uri(url);
    # p3 A; u9 A5 Z1 k; N  n" L
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    , R: J8 U8 k0 p+ X' I+ d% @6 S
  16.                         string fullUrl = "";3 s7 o$ B# j, j; w
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    3 d) V! ~9 j+ I8 m5 N" n
  18.                         {7 v. n" I7 `  L4 n
  19.                             fullUrl = m.Groups["url"].Value;0 J; u& M% I. X$ Q! R) P
  20.                         }  ~8 t# j4 S" [8 L" d  P( y+ |
  21.                         else
    $ I8 ?" A' ~. N2 p9 j
  22.                         {7 \2 h; L" R& Z
  23.                             fullUrl = thisUri.ToString();: C9 `8 K5 W( }5 z( ^( C
  24.                         }
    0 i* o' R; X  L7 O( O; U
  25.                         allHref.Add(fullUrl);1 e. p0 Z" o) E$ C: d, l
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    6 @, H0 L1 H2 h+ N: ]
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    . p8 ~8 o* y, k3 X8 O9 Y* s- ^
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    8 u! w2 D8 x& a
  29.                         //Console.WriteLine("…………………………………………");$ c0 y$ b- g( T
  30.                     }
    3 K. l2 F3 W+ Z
  31.                 }% s  N9 o& r0 W4 l. t+ C# y
  32.             }6 N6 F- x7 x, F8 W# I/ e& m
  33.             catch (Exception ex)6 p  V# O2 d3 b" i# W2 f" y
  34.             { }
    4 [1 d3 h6 R1 ^  g  K' a
  35.             return allHref;- o+ }+ C+ S& o$ N' ?3 J
  36.         }
    1 c' O7 X0 Y$ G# [: T
  37.         #endregion
复制代码
# F; ?: ]$ C8 r$ Y& F. g

7 }4 u) U8 E4 z/ \1 h
  1. 8 F( _( I" N3 s. c( F
  2. + p6 z( n& e! X) V
  3. ' ]  g, v( w/ R7 a
  4. #region 数据去重6 G$ C9 D& l+ f: e1 W5 U' [
  5.         /// <summary>
    4 L9 c0 q: }; H7 u" e0 d
  6.         /// List<string>去重
    , A( K6 A3 H* a* P! ]& a4 N# m
  7.         /// </summary>
    ) U5 y7 n1 Q$ `2 M
  8.         /// <param name="list"></param>
    ( D. A% m7 B1 d0 f6 `0 O! H3 a
  9.         /// <returns></returns>6 N& v+ v' v9 a7 T( s, }
  10.         public static List<string> getUnqueList(List<string> list)+ N+ W7 ^0 d) m7 j, C
  11.         {
    ' a1 |: j8 ]) ]% v
  12.             List<string> list1 = new List<string>();
    , S2 \4 U/ j3 t9 c0 A2 [9 x: L
  13.             Hashtable hash = new Hashtable();4 Q% w; Q% Z# p/ f7 T7 t2 {
  14.             foreach (string s in list)
    ) U0 Z$ q& H3 d( o
  15.             {) I, L/ |; `+ v. i2 j
  16.                 if (!hash.ContainsKey(s)): {9 ^6 j+ t" c
  17.                 {
    , P: J" ~. U* r4 W2 m
  18.                     hash.Add(s, s);
    5 ?" {9 S5 `0 t! s& r+ ]% ?$ ~
  19.                     list1.Add(s);4 i3 S$ O' @( G" [) }
  20.                 }
    * X8 H$ h- |2 K) O" g
  21.             }
    # h. P2 x: i8 w: a0 o1 T/ q+ M4 [
  22.             hash.Clear();
    ; u' ~6 S6 b, r1 z
  23.             hash = null;
    . l" ]6 k9 F" c" X1 C" ~4 u
  24.             return list1;
    1 U4 Q- _, a4 T5 Q) Q
  25.         }; }# L6 Y; k) ~' e' E
  26.         #endregion
复制代码

$ k: {9 l) X6 k  |
6 J" S  D2 s! P, C: ?2 Y3 o

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
2 Z7 ]& Z! G! c1 y4 C
十分感谢!!!非常感谢!!

点评

缺少一个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, k8 Q: [9 Q. }# n. _
十分感谢!!!非常感谢!!
- ?) m0 O7 b" B- D
缺少一个gethtml,用下面这个:4 K: s4 Y1 u1 X8 |6 c% H
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 , b0 N/ P( C% j! o9 D
  2.         {1 Y7 U) c7 G: g( A, c8 V
  3.             string strWebData = "error";- `# Y1 u! z8 `4 w2 i. G
  4.             try
    ) o* w# H; P: Q' l8 w
  5.             {
    ) k4 A" t7 c5 Q2 }
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 8 f6 L/ W" V# C: g3 r' v& C% n
  7.                 // 需要注意的: 5 F  r, B+ t6 `% I- N$ W$ |$ [
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    - ^9 k# Q1 ^; h" U" {% R, i, N
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    4 f  x' U/ w' P
  10.                 // webclient.Headers.Add("Cookie", cookie);
    : |% }) B& f$ l9 W6 V6 x
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    / J' |8 c, c. J4 ~! f
  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)");
      f7 r' a7 L! u3 V* l  G. u7 D( ~! P
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    0 {/ z/ K% k! n
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    # z' E. {! X# @2 s6 o" K
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;5 U" r  L. D* J/ A
  16.                 //如果服务器要验证用户名,密码
    3 i1 J: O4 ~# z% k' M9 q: h! Q
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    4 p1 B/ {2 R# j* j& x! z
  18.                 //myWebClient.Credentials = mycred; * B5 V" v' g) z  {8 f  O% U
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ! {9 |1 w' u3 Y. ]1 U# e; c  e: p' D
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ' M8 _6 u7 }  l( O; y, m; M
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    3 m* R" q. G- _9 O! O- _
  22. + n! q* b% H* \' Y$ V  _
  23.                 //获取网页字符编码描述信息 0 ]& g3 Z# l8 N4 t2 I) e4 x9 t
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);! t$ G/ \; i  z: E2 I" X
  25.                 string webCharSet = charSetMatch.Groups[2].Value;/ n9 N0 H0 s  T
  26.                 if (charSet == null || charSet == "")
    % ?$ o5 D! w: `6 E# n, Y
  27.                     charSet = webCharSet;
    5 q8 m' B( C" V$ o" y0 N
  28.                 if (charSet.Length > 0)
    0 X* H) x' f* u, @
  29.                 {
    3 l3 h( F& T! @
  30.                     charSet = charSet.Replace(""", "");+ _% u8 L: g9 A, _# e
  31.                 }$ J( F0 g, P$ y" ]* w2 C
  32.                 if (UseUTF8CharSet). |  ]3 B2 c2 `/ _2 t! s
  33.                 {
      P. c4 i  d7 J! U
  34.                     if (charSet == null || charSet.Length == 0)
    $ q6 U, n) q! y( D* B1 ^6 n
  35.                     {+ x8 R% ]- [/ L9 Q4 O$ \+ C
  36.                         charSet = "utf-8";5 y* c( v; L# j% ], R( a
  37.                     }
    , u1 v6 ~1 F* P' g
  38.                 }& b% x& l! |3 _4 t; @* B7 |
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)) y+ n2 H2 W7 ?: F, i  Z
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);+ E$ R3 o1 \% f+ K
  41. 1 G2 |$ ]* J, K1 Q  y
  42.             }
    ! m) u6 x8 G( H
  43.             catch (Exception)
    ; u& J1 i6 J; p0 s8 y( }" f; Q1 T
  44.             {& X9 K% f% E& d7 j& i6 h
  45.                 strWebData = "error";" F) n' x# J4 Q7 ?0 i
  46.             }8 _% }$ m4 t/ E% A  q7 U

  47. 6 K8 O' M- B9 j1 }7 q& `8 {4 d, w
  48.             return strWebData;
    ! z# T9 i  @) d5 Y$ T
  49.         }
复制代码

. c3 Q+ Z; K6 P* P9 c/ {
- k1 c" F6 N" ?8 ]/ N9 H6 [
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-9 17:31 , Processed in 0.047736 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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