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代理各种主页、账单户、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+ 地区跨境债务催收/风险代理
高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9866|回复: 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 抓取全站链接
    1 w, Z! @- I1 z) P6 l: v
  2.         public static List<string> GetAllHref(string url)% p1 L3 r" V$ I- H
  3.         {
    # c/ B4 ?# x% E, O; _* D
  4.             List<string> allHref = new List<string>();7 K. \% N3 k; ~3 I0 {
  5.             try; L# v$ F, a7 [' L
  6.             {0 F5 o+ V. N( ?) E2 m
  7.                 string strhtml = soso.getHtml(url, "", true);
    ( |5 R! }3 B  P0 K, A
  8.                 if (strhtml != "error")
    2 ~7 M1 J  W: u% c0 ^0 R, i
  9.                 {: p! B; a2 L; k: @4 q9 T6 v
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    + e* T4 N- {8 e9 r" r5 |5 @
  11.                     MatchCollection mc = reg.Matches(strhtml);. W- z  J' l7 l/ S1 h
  12.                     foreach (Match m in mc)1 M3 W9 F2 [; [- U5 B
  13.                     {
    - e; D$ j% s; {8 E
  14.                         Uri uri = new Uri(url);
    " a* R; J, S6 w2 g. Q& x
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);, c, n* C: B5 v$ |
  16.                         string fullUrl = "";1 k' {$ Q7 s1 d: p7 R
  17.                         if (m.Groups["url"].Value.StartsWith("http"))5 @" A& Q2 `! {: `- v
  18.                         {: M+ O  Q8 _- l
  19.                             fullUrl = m.Groups["url"].Value;( i; |( Q( g" s! E# O. ]
  20.                         }2 H  {# D8 [9 K3 S# ?  K: t1 J
  21.                         else9 b7 ^; D  r/ x, u
  22.                         {* \6 ?5 y! j& R
  23.                             fullUrl = thisUri.ToString();6 A! P- D9 G+ I5 b$ B8 x8 ?% G- v
  24.                         }
    , e, ~; X7 O7 Y$ g" ~: N
  25.                         allHref.Add(fullUrl);  O+ T6 h7 G6 U+ c! ^
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    : U  O3 `/ c7 m* y0 Z% Q2 j. L+ L
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    / d* a- h: p7 E, m$ q
  28.                         //Console.WriteLine("补全链接:" + fullUrl);& z0 T# n$ e' K$ r
  29.                         //Console.WriteLine("…………………………………………");( ^) v! y( o1 F2 F7 T) V6 [
  30.                     }
    4 O6 z9 r1 a: N1 [
  31.                 }& s7 Z" `$ W4 T+ J! m, ~6 {3 I
  32.             }
    % H/ k2 Z% m: |, ?; q( L
  33.             catch (Exception ex)
    . `: [+ `7 H9 F- J0 ~5 U
  34.             { }( c. h6 v9 k' d# _7 h$ D
  35.             return allHref;+ q: E* `2 m3 d/ `0 l
  36.         }
    7 H7 \' ~# V9 y! n+ W; O: W
  37.         #endregion
复制代码
* N9 Y  O# q2 b, n

0 y8 B3 @, e% _
  1. * L' U; B; ^- R$ H# }8 c
  2. - V' @+ b+ J' Z( C/ [

  3. 7 V) F; [4 |8 J5 i
  4. #region 数据去重
    & v% v5 {3 i( h$ Z
  5.         /// <summary>' w3 G* m$ z0 m( u4 `5 _
  6.         /// List<string>去重
    1 W( n4 m$ a1 L4 C; a! d. z0 ]
  7.         /// </summary>
    ) n/ |' X+ q8 r/ a, g# l& G' h
  8.         /// <param name="list"></param>+ d4 ^# H9 H+ M3 a5 ]# O
  9.         /// <returns></returns>+ \; ~; k' f) S) \# @9 ^9 u' {+ v
  10.         public static List<string> getUnqueList(List<string> list)
    / D$ [! h5 T6 V
  11.         {0 G' X& v. h& e
  12.             List<string> list1 = new List<string>();
    9 I0 i$ U0 a4 }3 ]  S6 u; d5 N( [+ w
  13.             Hashtable hash = new Hashtable();& K5 o, t8 u/ l/ c% t# a+ y
  14.             foreach (string s in list)' v. S  j" s, j5 ^' r# _" `1 Y
  15.             {
    + i" a8 ?9 i) V% ?  g
  16.                 if (!hash.ContainsKey(s))) b' b5 W# g& j* n! j( w
  17.                 {
    # o5 F* e# v, `6 _; [) F9 ~
  18.                     hash.Add(s, s);6 E& x5 {( D& f
  19.                     list1.Add(s);$ a: [9 e% V  k3 ^1 j3 ^% F
  20.                 }, g: q+ q* E3 X0 q' z3 C
  21.             }7 w+ c& o0 S3 `( B. E
  22.             hash.Clear();) E- l) a6 I% s/ O7 j
  23.             hash = null;
    . l+ q( ]) y5 M$ }# r) j
  24.             return list1;3 y% N0 l# J0 `( y9 {" t
  25.         }" c! `- b7 `7 V( f8 K4 y
  26.         #endregion
复制代码
  ^, Z) Q$ F5 b% Y: P4 O" L
9 e- @* _6 h4 X2 v

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

  _& m% Z# z: K3 Q. x; g5 A十分感谢!!!非常感谢!!

点评

缺少一个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
8 I% W' h3 K' e$ d$ a9 G1 i. _十分感谢!!!非常感谢!!
0 M' a% p/ ?2 [- T! b
缺少一个gethtml,用下面这个:6 W* Y9 h: M, c
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 % p, {& `, d$ J' B: V
  2.         {
      u& w8 U5 t1 s
  3.             string strWebData = "error";
    * y: ?; r5 L2 z" c: W
  4.             try% I- G" S" d3 c( y. j, d
  5.             {( G4 x5 T3 y! v  [6 Y9 G
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 8 c1 v9 ?( P# ~6 q
  7.                 // 需要注意的: % V$ S! i) y; k& w4 Y0 V
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ; |* H6 A" O4 ]$ K5 O! f
  9.                 //这是就要具体问题具体分析比如在头部加入cookie * b2 v4 h: g; U4 V+ X! o
  10.                 // webclient.Headers.Add("Cookie", cookie); ( M' B* r, T& _' [
  11.                 //这样可能需要一些重载方法。根据需要写就可以了/ a/ W& D. x1 w% W$ X" 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)");
    2 [) }1 C- _. b
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");0 _: ]4 I. _) Q  s3 l& j  d8 q
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 % ^) Z; Q8 I% n! F6 A3 X3 @5 y
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;* s6 c; E6 X4 l4 e
  16.                 //如果服务器要验证用户名,密码 6 h/ a; W5 Z, F" C0 }
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ( n0 O- |5 Q0 [8 N
  18.                 //myWebClient.Credentials = mycred;
    ; ^- I# ~) W( G
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ( e4 S- L: H9 d% B  C
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);! j! a( Y- N# J% C5 O
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
      T& ?, a7 {* Q' q9 L2 s

  22. ; o- w6 W2 ?" s8 P% _+ `
  23.                 //获取网页字符编码描述信息 8 v# k6 d; e2 x5 A
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    ( P* H$ ?- `# a
  25.                 string webCharSet = charSetMatch.Groups[2].Value;$ ]+ x  I2 p5 d* D
  26.                 if (charSet == null || charSet == "")
    . `5 B$ a5 d* u5 K) b
  27.                     charSet = webCharSet;
    ! H' q. W4 ^; S
  28.                 if (charSet.Length > 0)* X4 ?  [4 X6 z& q
  29.                 {7 [+ |6 d- X5 D' q* G+ ]& E3 l
  30.                     charSet = charSet.Replace(""", "");. {7 I5 f4 ~+ R5 x, D
  31.                 }
    / U  K* S* d  f2 X6 y) D. O
  32.                 if (UseUTF8CharSet)+ B9 e' o/ o  j3 e& ]) m, ]
  33.                 {
    & @1 p% v' A  {, B) }' a7 E$ x# e
  34.                     if (charSet == null || charSet.Length == 0)
    - N7 |0 O6 s& ^; P$ f( |
  35.                     {
    % B& O4 T/ w# h" A! g
  36.                         charSet = "utf-8";# r  E- {* H! p- X3 [! K4 i, D  s( k- k
  37.                     }
    : j( N3 W. i+ i0 c( e& h
  38.                 }
    - ^% l, ?. e. M7 I! w2 ^" q- f: c
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    ! P0 c$ @/ D8 `
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);" g; B4 z; Y+ g5 t$ S: f; S

  41. ( C( D, t. Q6 B' g
  42.             }* p9 n$ Y1 ^2 ^
  43.             catch (Exception); ]2 Z  g. M# y
  44.             {. @, b& a# p  D% Z% i3 M- h( H
  45.                 strWebData = "error";
    ! [0 N; c0 K9 H8 A4 C+ P
  46.             }
      ]: q' f; b9 ~6 F9 o9 _  ?6 v
  47. 3 [" F4 H- U7 n, J3 e' E' b6 K
  48.             return strWebData;
    ; ~6 c9 a: w  }* ~) t
  49.         }
复制代码
3 t4 H0 V6 a7 b& i  t4 n

$ s( Q. \7 S, e
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-15 18:02 , Processed in 0.052282 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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