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
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%
DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9943|回复: 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 抓取全站链接
    % V& M7 o7 J6 }4 C7 }
  2.         public static List<string> GetAllHref(string url), f' d6 X7 ?+ {: h- |
  3.         {4 @2 |2 H% l% e1 Q
  4.             List<string> allHref = new List<string>();
    + L6 d( w# z8 N$ p! S* l2 a1 [
  5.             try& G# b" w2 u! t0 \- C6 c6 B2 W
  6.             {
    ; M0 ]; z5 U4 T$ O# {: P
  7.                 string strhtml = soso.getHtml(url, "", true);
    6 w' M1 p+ d6 B
  8.                 if (strhtml != "error")
    ' B: F/ Y  D- c$ ?! s
  9.                 {
    1 l9 h0 O+ q1 s
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ( Q+ j/ e9 V( M6 W6 J( x  {
  11.                     MatchCollection mc = reg.Matches(strhtml);
    4 Y2 q5 Y9 i0 @7 S0 _, E6 D2 o8 V+ M
  12.                     foreach (Match m in mc)3 D# d5 i. p0 i0 L0 Y
  13.                     {, A* ?- @. _5 d% b& Y
  14.                         Uri uri = new Uri(url);8 U: O# v% w, ^, v: G
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
      t& D- U" X8 L0 [. b) J; h' q$ z/ d
  16.                         string fullUrl = "";
    ( P$ ?( C: l5 H" ^+ w$ b5 u
  17.                         if (m.Groups["url"].Value.StartsWith("http"))& f6 d/ U0 R. c  {
  18.                         {
    2 K* h9 |4 ^; C9 Y$ l6 @
  19.                             fullUrl = m.Groups["url"].Value;4 Z7 l8 ~0 `, a7 i9 C
  20.                         }
    1 `) E/ t8 m5 E5 I4 z
  21.                         else
    9 H, Y8 c% a& @2 k7 H1 X4 Q* {8 O
  22.                         {" L% ~& s5 c6 i! M* c
  23.                             fullUrl = thisUri.ToString();2 F( R1 Q9 _4 t$ H* Y7 l5 E  S% S
  24.                         }
    % }! Z( J, S5 M2 m
  25.                         allHref.Add(fullUrl);
    4 }2 P! E3 X! Q% `+ x1 ~
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);7 Z3 h' L" {4 I) d/ A
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
      N* u: D7 g( h: U
  28.                         //Console.WriteLine("补全链接:" + fullUrl);1 f6 z3 ]$ r3 D: K  u+ m2 p
  29.                         //Console.WriteLine("…………………………………………");
    ' r9 V7 \2 h( `* W' g# Z
  30.                     }
    & w9 h& A( x: r: u9 B
  31.                 }
    0 Z+ g! I8 O+ }3 D2 U1 Z
  32.             }
    8 e' a! Z0 E0 I6 R7 s7 `3 M
  33.             catch (Exception ex): A1 U' c: d: P& `
  34.             { }
    + A( K  }" Q9 u! b' c
  35.             return allHref;
    3 b% h& e9 G! [2 F1 G9 {
  36.         }
    . A$ d# z0 U: @7 B9 T
  37.         #endregion
复制代码
# U9 `8 ~2 S% S: O# s

2 h* p( m! F) l' a7 n# _& k
  1.   j/ z7 n' K& Z. W0 _8 s9 j8 z

  2. * [. `3 L5 g7 b! v7 }

  3. 1 l% U) ]2 f" ?: S# Q" q
  4. #region 数据去重7 X9 J7 h6 u- Y& b3 q
  5.         /// <summary>
    ( P* K; f9 ^: Y: j0 a
  6.         /// List<string>去重
    " I% L6 _. O" {5 s+ K* `; M, A
  7.         /// </summary>
    # e$ }8 G9 Y! P) _; K9 Z) ?8 J& g
  8.         /// <param name="list"></param>) E6 @( L8 _( n1 T5 k8 y
  9.         /// <returns></returns>
      w! ?% `+ D- @. ?: ^3 x" w3 e* V
  10.         public static List<string> getUnqueList(List<string> list)2 n6 c' w! m( @  r' \, E( v" _
  11.         {
    5 }6 T- l8 y# \
  12.             List<string> list1 = new List<string>();/ M' }4 ~3 c( j) t
  13.             Hashtable hash = new Hashtable();0 M  ]" ?" H& X( ^% x
  14.             foreach (string s in list)6 E6 r- F, A! v" l) Y& j9 w
  15.             {" K  ?# P. [9 |
  16.                 if (!hash.ContainsKey(s))
    ( e, t+ _  v3 r! f1 o$ z
  17.                 {* F* j; n2 r" e! u- |
  18.                     hash.Add(s, s);; f5 ~/ l2 k+ V# Q( o) [
  19.                     list1.Add(s);7 ^4 s+ j" y' S4 `0 ^  d1 ?5 I( y
  20.                 }) W" ^3 s' k1 R! R
  21.             }' H( b7 ?2 X$ i0 r& P& K
  22.             hash.Clear();
    8 C6 ^- C! |7 Y
  23.             hash = null;: }" y$ C' U7 |& X( c# t. O
  24.             return list1;  L! Y1 g' i" F/ g9 A9 {8 P  J
  25.         }
    : L/ \3 L4 x  L4 u' [1 ?
  26.         #endregion
复制代码

6 `7 h1 P/ v# O1 R7 C8 O
# ]0 T5 g9 K5 e/ u0 M+ l; O9 G* J

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
% |5 y( M+ R; f1 ]4 a; @) B
十分感谢!!!非常感谢!!

点评

缺少一个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
+ a2 T  h4 h$ l5 l十分感谢!!!非常感谢!!
, o' t3 ^) K% ~/ m: x$ `. m
缺少一个gethtml,用下面这个:9 K0 x# W# K6 m7 n! l' T
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 2 [  \+ t+ P- n4 v$ F. y" z
  2.         {# D6 [4 Q7 z, O) ~
  3.             string strWebData = "error";* ~$ W6 i  g" Q  Y& ?/ a; J: L
  4.             try: o4 K7 m5 L9 q
  5.             {
    " }, Y2 I1 |# T9 x8 T" I3 I
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 1 ?5 V$ F3 Q, U7 q" O2 o$ E/ K- A
  7.                 // 需要注意的: : Q" h! r8 T" c, j7 |/ F9 R( i  P, Q
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ; @# N( l/ B0 ]' ?) ^
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    % r# S, Q1 z: m+ P1 F, e- b" B% v  Z
  10.                 // webclient.Headers.Add("Cookie", cookie); - O- N4 C/ }# X! J8 U* }1 Q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    5 g; z" n4 P' s4 ?6 @' J
  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)");
    2 D0 _  q2 L0 m, q  b
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ) Z' @6 L0 T, \5 n  n, Z3 L6 K
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ' l- n$ h+ s! X' Y7 D
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    9 F+ U: w6 i! {2 c, `5 }! b, C
  16.                 //如果服务器要验证用户名,密码 5 g$ s6 O6 N  j# v' D, ~6 P
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ! e, Y1 C% S; l; [6 [
  18.                 //myWebClient.Credentials = mycred;
    * h: K+ s! {2 w2 m; J, X2 ?9 v
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) - c4 D0 ?, ^% b
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);& l+ R, z4 x" A3 h! [2 q* f
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);0 H! k) N' ~, m/ _
  22. ( M+ h% G3 X: X; v) Z4 N0 h. ^
  23.                 //获取网页字符编码描述信息 1 d! F/ z# G6 d! I% s0 I6 n* |
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);; C# l! j# o1 C4 B, e
  25.                 string webCharSet = charSetMatch.Groups[2].Value;* o/ S  J2 e# G' ~" x, U' e
  26.                 if (charSet == null || charSet == "")
    0 ^7 ]( e! [1 S0 I7 ?1 ^
  27.                     charSet = webCharSet;1 S/ x+ ]6 K4 Y1 G% v. O) B
  28.                 if (charSet.Length > 0)" S3 g" h0 F8 W4 t. G
  29.                 {9 V" l' b; m- e  w" a+ }
  30.                     charSet = charSet.Replace(""", "");
    # ~: D$ g8 o2 |- _- E4 o9 K/ A
  31.                 }
      N0 N7 z: x/ y5 f& M
  32.                 if (UseUTF8CharSet)% z- B/ b7 `( v( A" s( O
  33.                 {
    " c% F) L- ?: s4 \- t% o! X% R
  34.                     if (charSet == null || charSet.Length == 0)
    + j8 A: z) t  `( ?& A. G% ^
  35.                     {
    ' [" Z( X0 d4 |- P. f% H" O& R
  36.                         charSet = "utf-8";0 j! o( f2 y( c! `1 \0 Q; o5 ^
  37.                     }
    : f1 m! w8 b9 F, E# [
  38.                 }' v; P# z4 n9 K! Y" O
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 z6 z$ V2 f% |, j3 Q
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);5 D, i7 }  G& y, c

  41. 9 l3 Q; H) Z+ X  f* s, y( ]
  42.             }
    & S7 H( x+ w. N9 ]: Z$ B
  43.             catch (Exception)2 q7 Z4 W8 _) m& o' L
  44.             {8 \+ ]+ c8 M0 y& m" W( A% j; F
  45.                 strWebData = "error";- G: i8 ~  Z* ~7 Y; ^
  46.             }
    9 X; z- e' N; V$ k# {
  47. 5 X2 g$ Z& }) P2 G, T
  48.             return strWebData;
    . k$ ]7 \+ W' F) h
  49.         }
复制代码

* |! s4 i# V2 ?) L. c4 L) I0 B0 \# u& v  z" I0 ~& H+ G
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-9 11:40 , Processed in 0.051861 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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