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/条双ISP提供TK企业新户老户、谷歌新户老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9797|回复: 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 抓取全站链接
    5 O- V0 r" H4 q! }* ^0 M" I
  2.         public static List<string> GetAllHref(string url)1 U2 ~# h+ ~) f8 B+ L3 N9 k( D
  3.         {1 [$ a5 {9 W. ^% k& S
  4.             List<string> allHref = new List<string>();- \/ w" _) T- @
  5.             try( V( }: d. @; Y" E
  6.             {
    % k. ]/ x( k" d  \4 C0 @6 {
  7.                 string strhtml = soso.getHtml(url, "", true);
    + h1 p0 q: Y' e: Z0 X1 ^$ F$ c
  8.                 if (strhtml != "error")/ J4 D4 F, k" U
  9.                 {
      r! m! s$ B9 s; s) F) w2 I- C
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");# x' H# E: j5 y1 }5 l6 ?
  11.                     MatchCollection mc = reg.Matches(strhtml);* `0 U. ]5 \" H$ t
  12.                     foreach (Match m in mc)6 {0 c2 t% q2 t- v6 k- j
  13.                     {# `, z; V4 U* _" m: i+ X3 B' H
  14.                         Uri uri = new Uri(url);0 Q7 [$ r6 l9 ]5 u6 D2 ]
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);5 E9 b$ X+ B, @  i0 ]* f
  16.                         string fullUrl = "";
    ; P/ k* H, M0 S( h" b
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    9 i+ n  k/ [) r5 g9 b# E) h
  18.                         {
    " k; [( w1 E8 x; d
  19.                             fullUrl = m.Groups["url"].Value;
    ' ^) r# y8 U4 g+ B/ `, J6 L# O1 @  B
  20.                         }7 P+ q$ ~1 F& a5 e- ]' ^3 n9 d5 i; Z
  21.                         else2 x2 ^* s$ G' y0 x7 T
  22.                         {- `* |) F' W0 Q  B
  23.                             fullUrl = thisUri.ToString();% h% M) B$ v% W) B4 g0 J/ p
  24.                         }
    # o1 Y" X7 c) G, X2 T2 U' H
  25.                         allHref.Add(fullUrl);# @1 |/ Z) I: _) I) B
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    , o. B. G  l! W6 Y2 g4 E, }3 v
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);8 H+ C  Q9 ?- ~" A  F
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ! e; Z& t  z5 _
  29.                         //Console.WriteLine("…………………………………………");* N$ ^. v7 g5 X" E. M
  30.                     }1 }; {8 u  |( n4 B
  31.                 }
    + s& U$ W( Y$ L' y
  32.             }
    ) i/ |9 n  H. a
  33.             catch (Exception ex)- ^( G" N3 V) r$ \% y& S! N
  34.             { }6 m, A( t  c  {* G, e
  35.             return allHref;
    7 q" o# \* l, v7 r* U( G9 T* O; ?
  36.         }
    0 m# n, J. c: Q* f3 \
  37.         #endregion
复制代码

* O; N1 r+ {( b1 O9 f- N. n' a4 P8 R" S
  1. 3 @9 D4 ]% t5 V- |

  2. ! G% A* `) q3 _/ f6 q, v0 O
  3. 9 L" }2 Q& z. ^' M
  4. #region 数据去重
    . h2 I+ j1 b2 `# ^, w0 K  O
  5.         /// <summary>
    # r1 R: E7 q$ V7 w8 g
  6.         /// List<string>去重% m2 d+ |9 \% h% \! h3 O5 @
  7.         /// </summary>
      E2 U6 }$ L$ _
  8.         /// <param name="list"></param>
    : G+ o7 x4 A  Z
  9.         /// <returns></returns># F4 |4 N: L9 t& `( W, h. B4 j
  10.         public static List<string> getUnqueList(List<string> list)
      F: D3 J5 F' ^, D% S
  11.         {& J6 }- q1 ], |4 p+ a. f2 {
  12.             List<string> list1 = new List<string>();
    5 V( X4 B9 W  d
  13.             Hashtable hash = new Hashtable();1 A3 y' b- D7 J. F% y) I
  14.             foreach (string s in list)6 Y# W2 S5 ]: e6 Z4 `5 c; \8 n) i. T
  15.             {0 f9 t9 j$ w& k7 C" V( J
  16.                 if (!hash.ContainsKey(s))- t4 x0 P" I" Q0 f2 Z. G: ~, E1 G) K2 L
  17.                 {* n0 O7 C% f- O8 A
  18.                     hash.Add(s, s);5 e. n% j# i; c
  19.                     list1.Add(s);
    / x( {: t8 ~: \) r
  20.                 }
    & t8 z6 m8 d, F8 ]
  21.             }! i: ], m$ o7 h1 a
  22.             hash.Clear();8 H: v1 f$ J( w4 Y% g+ E
  23.             hash = null;
    & ^: A& K$ C& Z" P
  24.             return list1;
    4 b+ ]8 ~/ z: u) x- ~( e
  25.         }6 `; A- }+ c* q% K9 A- p
  26.         #endregion
复制代码

" D6 p" J7 k) p3 X% O# f2 K. Y2 A7 p/ @; c1 |

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

  d: H$ y5 p+ N% a" x8 W十分感谢!!!非常感谢!!

点评

缺少一个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( A: g/ V" ~' X$ _0 H5 q8 B. T( q
十分感谢!!!非常感谢!!
, p! d" s; z' v3 H) L5 q8 o
缺少一个gethtml,用下面这个:$ l9 d; z& i6 K# n" V1 E
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 5 F# e- V( ~0 c/ k1 v# ~9 q1 _7 e
  2.         {' O2 R4 S3 m' [8 i/ K
  3.             string strWebData = "error";
    6 m: y8 o( l! {
  4.             try
    2 E8 |* ?2 W! ~9 q# r1 W% C
  5.             {
    , J: d$ \/ f8 C0 e2 l% m- _
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    4 T: B7 S7 Y" [0 i
  7.                 // 需要注意的:   Z( N1 M/ \. N0 T6 t) e" t3 s& t
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 + E9 V. |0 V3 ^9 E1 P
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    4 C3 |9 ]# }- K
  10.                 // webclient.Headers.Add("Cookie", cookie); 4 {  ~+ S6 b: \: v2 N
  11.                 //这样可能需要一些重载方法。根据需要写就可以了- a% n8 q" M' R/ w# Y: i+ k& s
  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)");
    : q% M6 j3 Y" ~6 v( _
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    4 \, [0 g7 D% m% H
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    , U' k5 M6 {5 S! F) v- ~! t! X
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    & a4 Z# g9 ]; D# x. y
  16.                 //如果服务器要验证用户名,密码
    + v. v* c# e3 f* v3 w. `7 _
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    " O+ _& f$ K: y$ \8 L9 I0 q. X
  18.                 //myWebClient.Credentials = mycred;
    . _2 E& M4 d6 a1 R( S+ n; u
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    - o7 i+ K+ N! J) P' i
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    7 O6 r# V6 Z5 l" W& f
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ) y! P7 x5 J' ~2 L: j* }
  22. 0 I# v) }0 x& `  Z
  23.                 //获取网页字符编码描述信息 2 Q$ W% Y5 m- H: m
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    5 F( X+ H. A- @! w$ A( t- m9 D
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    3 k0 E/ T" z+ n5 u0 Q
  26.                 if (charSet == null || charSet == "")' z& k- p: c  f0 c: B# D' h, S
  27.                     charSet = webCharSet;& _: p* W# w/ Y2 S9 p
  28.                 if (charSet.Length > 0)
    4 i/ R4 i- f) V, ^3 M8 N
  29.                 {8 ^, l( g5 c0 L1 O( i& ~/ M
  30.                     charSet = charSet.Replace(""", "");
    8 a* m" T: I+ a6 M+ A# ^7 n
  31.                 }* G% L: f7 _- m& O, M& [6 o
  32.                 if (UseUTF8CharSet)$ N5 t& G5 f' H$ L
  33.                 {& o# H2 I- g& U9 r
  34.                     if (charSet == null || charSet.Length == 0), ~: r' n8 D' g1 m, e
  35.                     {5 F1 Z; @2 ~! r! C( u
  36.                         charSet = "utf-8";8 g) w% I, [( _) E5 P/ q
  37.                     }: {8 I2 I5 ~& O( O' X
  38.                 }, v8 `# ?! |' Q
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)+ W* b: ~  p! C' \
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    6 g2 m/ d- b3 p: ], E1 u' g/ ~: N

  41. . K; x- X, c6 U6 |
  42.             }
    + f1 C: G5 q: U2 W
  43.             catch (Exception)
    : e0 @0 D/ D- y
  44.             {, I, S: M  r2 k" o( ~) z; x- r; [
  45.                 strWebData = "error";
    ' C3 ]& Q5 q1 u+ T% v
  46.             }
    % z- q3 j; X8 u! z* x
  47. / }$ O- j* `6 K- \1 |( g+ M& s! K+ x
  48.             return strWebData;. j) {) L0 d6 o/ Z4 ^1 P
  49.         }
复制代码

; b* f3 ^1 z* |( Q0 A0 f
& p9 Q. G: v- C
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-1 05:09 , Processed in 0.051587 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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