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%,国内持牌机构   
查看: 9922|回复: 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 抓取全站链接2 Z. N% r' _7 f. }7 n
  2.         public static List<string> GetAllHref(string url)  f3 X, d7 d" M. j; W& b9 @, i9 ]
  3.         {6 J3 c4 I4 f. U
  4.             List<string> allHref = new List<string>();3 m. U5 M: g2 Y6 b, ~2 J8 A3 \& ^
  5.             try
    $ ?& H. }/ T# x# N7 R  w' f7 Z
  6.             {
    / c0 N& v7 @* g$ O* f5 K+ N
  7.                 string strhtml = soso.getHtml(url, "", true);2 x0 p: H" A2 h" e7 D4 ~+ d- i! s
  8.                 if (strhtml != "error")7 O: P( ^4 \  \, h, [4 B  D' T: c3 |
  9.                 {
    . ?2 I' v. h5 g0 z) ]
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    % Q9 X5 K( o: b1 r: s
  11.                     MatchCollection mc = reg.Matches(strhtml);
    / V: u5 t' u$ w* V( G
  12.                     foreach (Match m in mc)2 t) R  M0 S2 l2 j
  13.                     {
    9 M8 ^/ l1 {2 v, O' B
  14.                         Uri uri = new Uri(url);) L0 ^9 A: T% c% w( a( K9 s
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ) B8 z- }* @# T4 h) I. R
  16.                         string fullUrl = "";
    , z. o6 H4 s0 f5 @8 l% w; T$ Z
  17.                         if (m.Groups["url"].Value.StartsWith("http")); ]* T. g; ~  b5 y
  18.                         {' C4 M( x( S3 v! D4 t3 X7 M# P
  19.                             fullUrl = m.Groups["url"].Value;
    2 }2 T1 w* H/ m2 J1 `9 M
  20.                         }% x3 q$ O! _  v5 f* r0 C
  21.                         else
    - ~. X/ L0 m( |* W  C! W
  22.                         {/ J) w4 R. a# @' v9 a
  23.                             fullUrl = thisUri.ToString();
    " h& U; t5 |& c8 X9 O
  24.                         }
    : N0 z: R2 f7 J4 t
  25.                         allHref.Add(fullUrl);
    & k( r" N: t( L! Z( j7 x
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);/ {+ s8 P+ V8 A
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);1 T0 n/ B9 a9 V4 `  v: L+ O
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    - f4 E# I& m2 d& @$ M
  29.                         //Console.WriteLine("…………………………………………");
    " O' b8 j/ f* l  q: {" s* L7 N
  30.                     }
    0 H" U( ?  l+ s, }' q; ~7 {
  31.                 }
    5 o. v7 F8 X- d
  32.             }
    ) m9 p7 [% z' t5 {( A
  33.             catch (Exception ex)
    ' D, k: Y0 d7 R! c( u- O! Q( U
  34.             { }! \3 O3 W! ^- X% \* x
  35.             return allHref;
    ! N! k* f" U3 D2 E) b
  36.         }
    ! v7 L) ]% \! n0 ~8 B
  37.         #endregion
复制代码
( Z* J% \. Y/ F

2 a, d6 Q0 c- ^  ?6 a) ^

  1. 7 B( l! H/ z: _* L# q

  2. 1 W5 d+ B$ c) Y+ C2 B

  3. ' Y  T# p3 ?+ w8 ^& _3 ~; {
  4. #region 数据去重4 n" i7 A# i6 w  [( N
  5.         /// <summary>* d6 [$ v5 B' G0 ]2 P' p5 L
  6.         /// List<string>去重1 v+ b1 y0 O% c5 H4 J
  7.         /// </summary>0 ~4 x, f! ~0 i1 O$ p
  8.         /// <param name="list"></param>3 N6 E& f0 p+ b& R6 |
  9.         /// <returns></returns>
    : j3 O! Q7 w4 E4 L+ J6 Q/ {9 Y
  10.         public static List<string> getUnqueList(List<string> list)( j' i( x9 d* q+ j) y: Q" r) d. p( W
  11.         {
    / u* x1 Z4 V- `+ L+ O$ _2 \- y
  12.             List<string> list1 = new List<string>();
      M# v: {8 I2 P' n  t8 F
  13.             Hashtable hash = new Hashtable();
    & n4 i3 u) W, R0 L* j
  14.             foreach (string s in list)
    ! z0 J7 E- l) |  T; N: }/ M
  15.             {) l: b, f; B) I8 G0 \
  16.                 if (!hash.ContainsKey(s))
    ! M5 i  l: O# ]7 v  I: K5 F
  17.                 {
    9 t; W6 n! ^/ v3 i
  18.                     hash.Add(s, s);
    ) `% Y% ^$ z! q9 V! z& M
  19.                     list1.Add(s);4 r: ]. o/ |" u- F  E# y: ~2 U" u7 K
  20.                 }
    + t, o, j& t' M8 M' @
  21.             }
    ; {7 b/ u5 q- [
  22.             hash.Clear();: v; M1 X. O3 P" u1 Z5 ^
  23.             hash = null;
    " j" F' k2 h5 }! W$ x5 o1 g
  24.             return list1;
    ) M9 C3 c: [2 H
  25.         }
    6 V: U2 |; ^4 }; P) ^
  26.         #endregion
复制代码
1 J6 g' C4 Y( N: m; C! U( }$ H
0 {) \( n5 b, O2 l- Z$ `

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
1 N5 N: }. S6 R* n0 [- t% 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
* ^3 F1 M2 F4 I  }/ N: E9 @- ~+ z十分感谢!!!非常感谢!!

5 C5 q& G/ h( A! G/ H缺少一个gethtml,用下面这个:5 o+ d) ^( h9 n8 h' l
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 7 [8 F7 A3 W) Y$ z$ I
  2.         {
    0 H9 ^' T8 U; A( n* ~+ g) ]
  3.             string strWebData = "error";. D' r2 y! n- N& l1 ]9 l
  4.             try; S2 C# ^2 O; p# l0 p0 |
  5.             {
    1 x. m3 b- X: w4 D+ u' ~
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    1 |# V8 o9 A! X" }
  7.                 // 需要注意的:
    " o- h) M9 H& g( h
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    9 k+ q2 n8 E3 O
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    2 ^* h5 @4 x. o' r; U& |
  10.                 // webclient.Headers.Add("Cookie", cookie);
    9 ^; p3 ]9 c$ i4 Q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了# ?4 a' X. h% L  X
  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)");8 a0 b9 p$ P# f+ |8 `4 Q
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    . ~2 |  W( ]/ }6 K/ l
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    1 H  {1 g6 p( W. @4 R, ]: s
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;- F+ D) t3 ~/ n! H
  16.                 //如果服务器要验证用户名,密码
    1 K8 ?) W% T+ d* {4 I4 H  u, r
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ! o/ t2 r* i8 Y7 T5 z' A( D1 C
  18.                 //myWebClient.Credentials = mycred;
    0 ~5 {- j$ l. o$ F+ ~
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)   d+ s, J( |/ L$ z6 C
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);% j5 u/ f. z4 y" K
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    8 D# p1 \( @0 l0 N

  22. : h3 X% W/ _$ c
  23.                 //获取网页字符编码描述信息 7 `. w5 D( t7 T. Q8 w# ^
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    ' {- k8 ]6 {. l- A
  25.                 string webCharSet = charSetMatch.Groups[2].Value;$ J0 y! `) P9 m' H( Q
  26.                 if (charSet == null || charSet == "")( \; [: N( x) @4 B
  27.                     charSet = webCharSet;9 z# R& d. h) d/ E- K  {
  28.                 if (charSet.Length > 0)
    0 _9 [2 m% }/ y; H; A
  29.                 {& r5 `, C3 `. L9 O/ q& F
  30.                     charSet = charSet.Replace(""", "");
    : n' \& K) I8 R
  31.                 }
    0 Y0 X: `' H- j1 v0 b% J
  32.                 if (UseUTF8CharSet)
    ) B' H! Y; b$ Z& ^: g) A
  33.                 {, O9 f" L6 l$ \4 L% D
  34.                     if (charSet == null || charSet.Length == 0)* J* b" ]/ x- r
  35.                     {, T) z* E/ D" I* _7 z
  36.                         charSet = "utf-8";
    ' F1 x1 b: ^; d/ X9 v
  37.                     }
    , i3 ?6 a$ F3 y' I0 X7 h
  38.                 }9 Y" E" Y2 W0 k; D6 T! r
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default): L8 @) Y3 ]" q# p7 _5 F
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    . h- U" n9 `( k) {2 B5 [( x

  41. + l* s/ ~. k% {( g0 p
  42.             }5 m8 t; M5 |9 o
  43.             catch (Exception)
      Y. K. `  V( N+ j6 d% i# T0 W
  44.             {% Y( _4 E. m$ G8 ?% T
  45.                 strWebData = "error";, t, N4 A+ i2 k) z. {9 n7 J4 A% ^/ W
  46.             }
    6 v7 [0 Y7 `+ A
  47. 8 B3 d. @2 H' [2 Y0 |$ Q2 @* I- V
  48.             return strWebData;
    7 q% H# |% B; c+ G, B- |& _
  49.         }
复制代码

4 x" f: O* u; m5 m3 }( v7 T& l. }3 g0 q( s5 d0 |* \
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-1 03:33 , Processed in 0.051018 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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