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加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9875|回复: 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 抓取全站链接
    # ]  K8 }5 Q  [3 _, a  D  B
  2.         public static List<string> GetAllHref(string url)& V- @! i* l0 a5 e% L& q5 a4 f8 L! ~' |
  3.         {8 S: N: D6 l* z  o! q! U
  4.             List<string> allHref = new List<string>();$ O/ n+ }9 a7 l$ I  k" Q
  5.             try. S# `- f4 V% Q; W2 @5 j
  6.             {
    . e6 {) w* x( d; `# D4 t7 n
  7.                 string strhtml = soso.getHtml(url, "", true);( ^2 i! P2 B+ X
  8.                 if (strhtml != "error")
    1 m$ _. t' E9 Z
  9.                 {0 ]8 S$ m" L% g$ u1 W
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");# Y7 ~# y+ d1 U4 q
  11.                     MatchCollection mc = reg.Matches(strhtml);
    # v6 L/ Y5 u! H  ~0 C
  12.                     foreach (Match m in mc)$ ]0 m3 N$ @) U. P+ i- T" y# E
  13.                     {
    2 [* r  |2 s) O2 q
  14.                         Uri uri = new Uri(url);
    0 r) \% B: a# W& G& L) k
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);/ Q& w( I+ c# P+ {/ ?5 ]) Y% G
  16.                         string fullUrl = "";* [. y2 B0 ?! N# V
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    + l$ Y2 k: O1 o- }* k8 t7 s# F
  18.                         {
    4 |3 |/ t! ]/ S5 ~
  19.                             fullUrl = m.Groups["url"].Value;
    ( Q, R, D7 i/ X# E: N
  20.                         }7 X/ B7 D; |4 u5 O( G* _) W! k
  21.                         else
    ) F8 K# {/ p( O; ?
  22.                         {
    * C6 k$ _2 \+ v. }( H; Z1 A
  23.                             fullUrl = thisUri.ToString();! @2 U6 H! q' J. x% {5 Y
  24.                         }
    : b) b4 j( }3 q( {" g- r
  25.                         allHref.Add(fullUrl);0 W( m, q: e* B) j6 k' l
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);/ N4 c# N4 \7 D
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);7 {6 g' c- D7 [3 b4 b/ e4 ^3 _
  28.                         //Console.WriteLine("补全链接:" + fullUrl);! b. I- N* X6 C6 C5 m
  29.                         //Console.WriteLine("…………………………………………");
    ( l9 W: [1 f' ~# B5 @- s" w% I4 N) X
  30.                     }; g$ R+ A% [; |
  31.                 }
    ) {6 h$ ]" q; N) y0 ~8 o! l4 q; c+ i
  32.             }
    / E" e! h9 k' U6 u
  33.             catch (Exception ex)
    : p8 ~5 Z4 S8 S, G
  34.             { }$ A9 v" _8 x' m+ ^! C) b4 B
  35.             return allHref;
    . Y3 w5 n; X5 s0 {4 D! A, P; w
  36.         }/ ^" d5 r9 v0 z" c
  37.         #endregion
复制代码

3 S2 x6 O" y5 R% g6 }" ]" f7 [1 }" Q, ~/ A
  1. 1 d" Y8 Z0 w  k5 w0 M& d  Z
  2. & ]6 x2 m4 L2 w# P: c2 I2 S
  3. " P: \. \& l) f7 i  q& V
  4. #region 数据去重
    % R6 K, ?# z2 J) i; T, ]
  5.         /// <summary>0 \/ e( K* O* g7 H1 t1 D3 ~8 n
  6.         /// List<string>去重
    / c7 G& K6 R1 h; u4 K
  7.         /// </summary>
    7 F( [( \- p; H
  8.         /// <param name="list"></param>/ M" i# A. M. O  c( S4 g
  9.         /// <returns></returns>% ^: Y  q3 ^: }( v- Z8 n
  10.         public static List<string> getUnqueList(List<string> list); p! `$ E0 w/ a" z) S7 `
  11.         {
    + n" G0 s% n  n* r" j' X
  12.             List<string> list1 = new List<string>();
    # e$ l! W$ F1 i. Y
  13.             Hashtable hash = new Hashtable();
    * T0 D3 S7 t" b+ Q: }" l) E  _
  14.             foreach (string s in list)) V3 x6 p0 e0 E! G
  15.             {8 U3 x/ E8 ~2 X
  16.                 if (!hash.ContainsKey(s))4 P. F0 a7 E- Q7 v4 m, R5 C
  17.                 {" [; O/ h. r. r  ]- k9 k) D; \
  18.                     hash.Add(s, s);
    4 q  P$ b  I# R7 \" Z
  19.                     list1.Add(s);
    0 V2 o& ]' v) w* z& K  r
  20.                 }
    ' |  F8 k" f  K
  21.             }2 ?$ D( K8 n) H4 c! a
  22.             hash.Clear();
    : k+ `- {$ g! J. C+ Y8 {
  23.             hash = null;( k: c( Z9 M% x1 |- ]! u
  24.             return list1;
    0 {9 a) v) T; E7 r; C3 Z
  25.         }# L3 v- y, I, O2 h8 r3 R
  26.         #endregion
复制代码

# S. A+ H7 q) T- `" r
0 T% m* T" g4 q" E

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

9 k1 V* Q# |! Y8 ?+ 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
2 Y/ v* k- X9 Y# k十分感谢!!!非常感谢!!

2 C/ y- H( Q2 E) a1 r% {/ i7 p缺少一个gethtml,用下面这个:
" M+ f0 S$ y' x& R3 l( A
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 3 [/ e4 m% E* x& F" i
  2.         {  A% K* p) |9 P  Q
  3.             string strWebData = "error";7 C- u) ^! g' `* N& O5 y2 F
  4.             try
    3 L" a- O! {* M. \/ p0 U
  5.             {' w& j- J  z# G: R/ K( }" ]$ {
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    , i9 O2 g2 X% C2 ~8 A9 z
  7.                 // 需要注意的:
    ; _& Y: a/ [8 ~7 `/ G. n, W1 C, x* M
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 2 J# X1 ^' H& B* T# I$ s8 K# S
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    5 s0 o# d7 X* ]0 a1 ^
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ; R7 a# c" [9 G6 {# e- w
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    & S5 Y- w' c  U
  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)");
    1 W, t! ~8 Q( X
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    , g$ m: j; a3 l5 \* v- b
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 / c0 ~+ _. S: J+ m% \
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;& [* M0 G8 f3 L3 N5 N: L& i
  16.                 //如果服务器要验证用户名,密码   L+ F# W  F# J5 q$ g' F
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ' w. p; Q( t6 R1 q) z% I
  18.                 //myWebClient.Credentials = mycred; * P/ t' Y8 B1 {2 \
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) - O  A1 O* b; ?4 h8 M
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);% {* w% q: }. ~% p! Z. x
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);, a) N3 C2 u8 V& m

  22. * G7 t- r2 l) ]8 `0 c0 i& c
  23.                 //获取网页字符编码描述信息 : h8 j( m( R  c0 C
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    # v( g) V. r; E6 B! N4 g
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    $ ]9 n* y2 K5 C5 m3 o3 ?
  26.                 if (charSet == null || charSet == "")
    3 ~3 S# L6 q7 N3 `' K7 X* ?8 O
  27.                     charSet = webCharSet;
    / q: y, b! g' r3 I2 f
  28.                 if (charSet.Length > 0)0 o3 y1 T8 s* I4 J
  29.                 {- ~# Q6 X) X* g0 ]% I7 L* u7 X8 p
  30.                     charSet = charSet.Replace(""", "");
    ! v& k' x5 f1 p6 _6 v
  31.                 }
    4 w! w3 I2 Y  A5 F0 t3 x
  32.                 if (UseUTF8CharSet)" a; C. G9 b- L9 t: L
  33.                 {! g& y" V2 ^! h% H' g% `/ F
  34.                     if (charSet == null || charSet.Length == 0)8 Y5 x/ k" |& r% ^8 J+ b
  35.                     {
    ) M5 m8 A. `& i5 s
  36.                         charSet = "utf-8";
    0 S5 o% z- X- C, [" V! E6 c6 i! o
  37.                     }1 B' n0 l$ J! X& H2 s$ l
  38.                 }3 o/ q- W1 z4 E) B# Z
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    . b0 D/ W/ u+ h" w4 a4 c/ U
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ) s" p( S7 E: r/ A; i. V1 z

  41. # R5 C9 w+ s! ^! f- |% f9 h
  42.             }5 o. I4 ]. ^( y( ~  o" G
  43.             catch (Exception)
    % d, h  ^) h1 p( G. o1 e1 `
  44.             {% G# b( P" K' D$ v" v- p& }  y( ]
  45.                 strWebData = "error";  S; f) B* I4 U3 x( @
  46.             }
    . z+ ?  A+ E% I; c" T3 H. y8 D9 K% j

  47. ! u2 H8 `; I8 N4 h0 d4 G
  48.             return strWebData;
    3 y* s& Q/ M3 w
  49.         }
复制代码
0 D8 c: d" u( [# \2 s
; W) l3 S( M& R8 e0 w5 k2 Z
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-19 08:50 , Processed in 0.088554 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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