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加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量高品质·稳定高速纯净IP
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9914|回复: 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 d5 `; x) ^+ B# W, V( C, g
  2.         public static List<string> GetAllHref(string url)8 O7 ~* l5 C/ U' z2 {2 A9 _
  3.         {
    ; V. y4 l9 _) T' J4 w
  4.             List<string> allHref = new List<string>();
    + A& Y8 E6 F; z% E9 ~
  5.             try
    9 Z# z: c9 M- w) u
  6.             {& K0 g) ~, e; [1 G* i: A( H- b! y$ T# U' n
  7.                 string strhtml = soso.getHtml(url, "", true);+ \3 o& ?( s- I* y7 X  ?
  8.                 if (strhtml != "error")+ m& h) W4 Q0 `9 @
  9.                 {
    , _' W8 r  [; N# O+ f
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    # ^5 }, N1 V0 S: W0 f
  11.                     MatchCollection mc = reg.Matches(strhtml);
    9 ]9 o" P+ R+ T
  12.                     foreach (Match m in mc). m: Z. J$ a* g. z
  13.                     {
    2 R: Q, v0 }( Y$ e' B
  14.                         Uri uri = new Uri(url);
    ' ~1 j! e5 w' D! w2 y* ]- ?2 |7 s
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);6 `* E3 h0 U: {
  16.                         string fullUrl = "";; K8 Q; |2 {! n& u' v
  17.                         if (m.Groups["url"].Value.StartsWith("http"))8 m9 y0 g/ \7 Y: w: o! a# X  L
  18.                         {; d* A( N  e7 ?$ y  X; Y" A) _
  19.                             fullUrl = m.Groups["url"].Value;8 h) E& f% z$ G# \' J; X
  20.                         }& l: U0 v2 h1 F; k7 E9 _
  21.                         else
    : `" K2 V8 Z$ O2 j, V/ b
  22.                         {
    ! R) D. D' l0 b/ T
  23.                             fullUrl = thisUri.ToString();. \1 h" {. G& M" d* k" N
  24.                         }
    + g7 g& \. X- i& H. Q
  25.                         allHref.Add(fullUrl);
    " }, r; {3 x8 ?2 E+ L- Z0 C
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    9 V# ]' T( {: {- {* _/ R* N
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);; S, m" U; P) n; b; N
  28.                         //Console.WriteLine("补全链接:" + fullUrl);/ _% Z! Z/ ?. t6 l+ ^
  29.                         //Console.WriteLine("…………………………………………");
    8 R+ y1 k  X/ ~9 J* `) f
  30.                     }
    + A  g/ C0 H/ Y- y! u! l
  31.                 }7 F/ Y' s# `( Q, F; c
  32.             }6 x4 f! {6 G# Y6 |" q- W: \
  33.             catch (Exception ex)
    # F# ?" ~' t( x1 }" O$ T# p
  34.             { }1 }9 E1 y! S0 s( L5 d* m  _! f" t
  35.             return allHref;
    9 \3 [" m& \" t" P4 c! h% ~- t5 S
  36.         }" L8 J/ J1 s+ s; v2 i# e$ W2 e$ h) Q
  37.         #endregion
复制代码
$ |5 |- A" F% \/ T

$ L4 P0 e( E/ {
  1. ) c9 J/ H5 v2 x/ E9 r% s7 y

  2. + @3 C$ l1 |1 ]- T/ V

  3. : b* n1 }1 g; C1 _( @4 I# {. R. Q
  4. #region 数据去重% q9 h+ n8 a0 P
  5.         /// <summary>+ w2 K. e+ Q/ X, g3 a
  6.         /// List<string>去重
    ( Y4 a* S4 Z& I0 `9 M
  7.         /// </summary>
    : C& m' d! L' m( K8 |
  8.         /// <param name="list"></param>, f6 q" g0 c& i. x% V8 B) w0 }
  9.         /// <returns></returns>* _8 f, ~5 e; F8 V
  10.         public static List<string> getUnqueList(List<string> list)+ m, Z3 w% d( ]9 h
  11.         {" a# ?$ u1 C. [3 D! Z% J
  12.             List<string> list1 = new List<string>();
    * S0 ^$ o/ {2 Q+ w
  13.             Hashtable hash = new Hashtable();  A% x7 ]3 h5 P, u
  14.             foreach (string s in list)
    ; m0 T0 v  x- @4 T1 ~% i
  15.             {+ [9 a/ M8 {! Q8 i8 |" ^  `8 F. O, Y
  16.                 if (!hash.ContainsKey(s))7 |# G0 p# s  y; I3 L
  17.                 {
    0 V' M2 F- Y3 p$ T  n
  18.                     hash.Add(s, s);$ Z5 q1 L- A4 ?) d) l5 x
  19.                     list1.Add(s);4 o' a' M+ P7 q9 y
  20.                 }
    % l. y) J. \/ r6 {/ ^
  21.             }
    / E' U- y+ X* j3 [% L
  22.             hash.Clear();
    7 X. R6 \- x- K. [8 u4 E
  23.             hash = null;
    + A7 M( X# x* C/ f2 d9 S
  24.             return list1;, B+ u6 s* V$ x+ C: i$ [7 U' |' K
  25.         }9 N( m6 a7 k+ P
  26.         #endregion
复制代码

: D$ r# \" ], \1 h7 e+ G* i. M* U3 D! s3 |

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

$ ^4 S; n4 O3 F" O% M) g) S# I$ Z% @" l十分感谢!!!非常感谢!!

点评

缺少一个gethtml,用下面这个:  详情 回复 发表于 2016-2-26 16:23
回复 支持 反对

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:200 k8 [, |9 V8 r7 F# ^- u6 U5 H
十分感谢!!!非常感谢!!

, J3 J9 m8 }! `3 n- |缺少一个gethtml,用下面这个:
& W- I+ k$ L" o' Z
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 : Q" M6 S" f6 t, M$ L5 j% J
  2.         {# P$ @( t2 \' L- P; K" C, B
  3.             string strWebData = "error";* D, ~  b+ W  E0 n# X
  4.             try8 e  w' E, V" S/ f; Y
  5.             {7 Z# n  Q6 Q5 a8 _) `7 X
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 5 E* K9 R7 O! D! \& E
  7.                 // 需要注意的:   m6 Y  l- n# O: \6 X5 X" r4 x8 S" M( A
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 + C: v0 u' @) V1 I! c
  9.                 //这是就要具体问题具体分析比如在头部加入cookie : s: F4 h, D) L! a" N, x
  10.                 // webclient.Headers.Add("Cookie", cookie); 2 W+ ]0 m" ?0 Q$ r
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    . U  p( t- S3 |  G, F% R
  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)");
    " N/ f/ P" I8 s/ A# k
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");/ H! l6 ]& {% {8 Y
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 . r) M) T' O; n$ I2 p
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    # P6 ]; r" f* n# e$ D, m
  16.                 //如果服务器要验证用户名,密码
    - K! o4 ^! \0 @( Z* f
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    / y: F0 V6 B- t/ p6 H4 _' M1 U
  18.                 //myWebClient.Credentials = mycred;
    & t2 J. o# F* T: S) b
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    + v7 G8 a' B( F* b" e
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    3 u+ @" b  a+ I2 G3 x
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);7 O/ W) I; n% @) }% t0 T" [

  22. ( i8 t; H" L4 l& q& n4 j  _
  23.                 //获取网页字符编码描述信息
    / x# m* p# |6 m) r
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);- P3 v2 ]0 W3 ~" k/ x$ p, B
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    8 Z6 L$ Y9 A: |: F
  26.                 if (charSet == null || charSet == "")
    # f) N7 k1 N7 X8 V: }, {
  27.                     charSet = webCharSet;
    : v9 q6 w, I$ [, r* I) N# G8 @5 v
  28.                 if (charSet.Length > 0)
    3 |& Q1 D; C' @& A, U9 s! R
  29.                 {/ x/ Q- y1 x( W  t* Q, n
  30.                     charSet = charSet.Replace(""", "");: ^5 }$ H5 Q- s. j& G- g3 v, A
  31.                 }
    ) I" C# Q2 i5 }( K
  32.                 if (UseUTF8CharSet)( ~' D; F9 u- K% [% q$ E  t: n
  33.                 {+ @1 ]2 Q4 o0 b1 M8 m2 Y( n' g
  34.                     if (charSet == null || charSet.Length == 0)
    ! y; k5 J  u+ r, T
  35.                     {# ]' U7 Y3 G6 [* e. u+ T( P$ H
  36.                         charSet = "utf-8";' `( o% C, t2 f9 y; K
  37.                     }
    3 X5 _9 U# n! }3 J9 ^. Y
  38.                 }
    # F8 d$ U+ A# c; z8 r
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)2 c+ k$ [5 a6 r$ b7 H9 Z8 l
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    5 U, |9 n* X* o0 u5 r
  41. 0 A! P7 g, {6 @8 o
  42.             }1 ?. V; B5 N- i! m* A& f3 C
  43.             catch (Exception)
    / `" y: I6 w& L# Y6 _# Q. @# B8 e
  44.             {
    " i) }# ^+ e- o" E4 p
  45.                 strWebData = "error";
    9 w# O/ W9 G) `9 z# \) [' W6 h( E/ A/ X
  46.             }
    " {' l3 y9 Z. v
  47. 0 m) f( z5 J+ B6 `
  48.             return strWebData;5 r) `0 {/ H* `6 Y; r3 b
  49.         }
复制代码

: ^* }; f) B# z  |: c4 ^$ h2 h
) N2 }( D7 A# A
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-26 23:21 , Processed in 0.053968 second(s), 18 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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