找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手TK加白户/二解户/FB海外户/GG老户
海外CL企业户源头最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审GG,FB,TK, 欧美源头, 欢迎合作❤️
FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天⚡️Spend.net — 美元卡仅需$0⚡️
比特浏览器+云手机 |防关联防封号Facebook截流, 1 次点击 2 次曝光广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 10160|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

213

广告币

297

积分

初级会员

积分
297
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接3 b: E4 Y+ u, u% k- j# P
  2.         public static List<string> GetAllHref(string url)( l" A- J& i0 @7 S, _9 Y% E9 i
  3.         {
    5 M; W2 w9 j0 j+ b9 X0 t3 t1 f
  4.             List<string> allHref = new List<string>();: [  C! U; ]. a+ h$ z# @% \0 L
  5.             try
      o" j1 h# W$ l% z$ Q: R
  6.             {
    0 s# h. u! e0 ]* A- B% B/ P
  7.                 string strhtml = soso.getHtml(url, "", true);
    ! M, i( m, t) }
  8.                 if (strhtml != "error")
    , s! o6 d9 a3 v  c5 V- {4 a
  9.                 {$ o% O6 k5 `! U. j4 z
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");. V+ @1 C% ]4 G* J/ m( a
  11.                     MatchCollection mc = reg.Matches(strhtml);* L: i' C7 }1 n+ ?
  12.                     foreach (Match m in mc)
    ; Y0 I* K5 F3 R' t3 y/ x
  13.                     {
    % u9 ?+ u* G3 O$ L- o1 G* n
  14.                         Uri uri = new Uri(url);. [, h6 ]( ]' u/ g! i" p: G
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);2 f/ f+ a, I* ]+ t. g. o
  16.                         string fullUrl = "";
    , a/ [4 X0 s9 [2 _- W& z1 m
  17.                         if (m.Groups["url"].Value.StartsWith("http"))& r( A* T6 v& X- R0 q
  18.                         {2 E1 _1 O+ Q8 i
  19.                             fullUrl = m.Groups["url"].Value;8 Q$ b9 `8 t& @
  20.                         }, v- i; w( ^) u* Q0 z8 n. D% u1 r- C
  21.                         else
    : d4 k! Y" R/ {/ E7 J8 B
  22.                         {: E4 q' c  ?. B  {: m
  23.                             fullUrl = thisUri.ToString();9 Y% g( b. H5 M
  24.                         }
    0 C* C) `9 l! a& D
  25.                         allHref.Add(fullUrl);
    ( Z. l- v) F0 ?( }% m7 @
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    . p' i9 w9 W( k" V1 ^
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ' I+ }* G( h& F, h6 l" \4 o
  28.                         //Console.WriteLine("补全链接:" + fullUrl);4 u2 ?( j  `$ I$ D2 ]
  29.                         //Console.WriteLine("…………………………………………");
    : o& j3 [2 e3 m6 e
  30.                     }
    5 G% ?" e! A% z( J! u6 B( _
  31.                 }
    ; H9 ^! F3 p! z; D# J. l& u2 j
  32.             }
    " e4 H/ W8 d% d
  33.             catch (Exception ex)2 m  c7 A; G* }
  34.             { }
    2 V) X5 J* Z% K) }  h
  35.             return allHref;9 }) Z) X; R# T. U
  36.         }& X0 w& V8 O2 M$ j
  37.         #endregion
复制代码

% \. o! W9 d7 F; y) D- e; w0 f6 _+ s3 W: ?6 v! _/ v
  1.   l3 q) o' M8 Q7 y2 p7 m

  2. " w; P. D2 [4 |  [) g

  3. 3 N: y+ m$ M9 N0 N5 D% i. U
  4. #region 数据去重
    7 V, S  n* \& N4 E
  5.         /// <summary>, D- I( u6 }& U* {- d$ o3 }
  6.         /// List<string>去重
    / t! J. l4 |% N( b" `
  7.         /// </summary>
    1 s5 k9 g9 P, A, A4 u+ k
  8.         /// <param name="list"></param>
    # V$ C" e( O, b3 Q* s7 v
  9.         /// <returns></returns>
    / U" f$ e. F0 g
  10.         public static List<string> getUnqueList(List<string> list)
    ; E3 y! J6 k1 [" B# W: `$ N- l. C
  11.         {
    7 ?( G, t; `2 x6 c
  12.             List<string> list1 = new List<string>();
    6 _: T# d& k2 M0 c$ h
  13.             Hashtable hash = new Hashtable();& e, ~  K8 `6 _( g* n
  14.             foreach (string s in list)
    4 @  ^4 l# _- o& j$ C7 T
  15.             {
    9 B. c* N8 b, y( [" `
  16.                 if (!hash.ContainsKey(s))
    ' {7 G( x/ W8 v" t' K' C4 z- P
  17.                 {0 Y. Q1 p4 W6 @# K. ~/ ~
  18.                     hash.Add(s, s);
    * M6 N* d7 ?/ G4 N% G* P3 l( z
  19.                     list1.Add(s);
    2 a& E$ O' I. @* u; |
  20.                 }' u" d/ y; S3 @4 G" G9 z5 F; K
  21.             }) z; m: a( a* s7 c) B+ T
  22.             hash.Clear();
    ' {9 S) I  Z5 s$ ]
  23.             hash = null;
    8 Y) ~1 Z) R+ U5 Y1 [5 j
  24.             return list1;
    8 J, p  J$ _' ]5 ]) y, |
  25.         }8 _* _: m- M. K8 g$ F
  26.         #endregion
复制代码
: G8 T0 A$ v6 z, ^
# h3 D' w4 U5 }- B

点评

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

使用道具 举报

36

主题

213

广告币

297

积分

初级会员

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

& O/ j* C0 l( H; c+ X8 H( m" L十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
( s# q0 P/ h. P/ ^8 a. L十分感谢!!!非常感谢!!

5 @% r% T# G; P: G! N缺少一个gethtml,用下面这个:: p0 p! h. w, \' L
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 6 w9 R! G. \/ [6 g
  2.         {" b! w1 q+ ?2 L7 T5 D5 `1 p6 `
  3.             string strWebData = "error";! J3 V5 E5 U' w2 {' n4 J  l0 n
  4.             try
    ' P  J( P$ m0 |8 @
  5.             {+ u5 B& P1 k6 \9 W  k  b
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ' q' z# [& L5 }6 i/ [
  7.                 // 需要注意的: 9 o. |. t% m6 q# {9 ]4 c
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    ( [# }6 Y/ ]; ^, B7 g
  9.                 //这是就要具体问题具体分析比如在头部加入cookie + v& k! Q/ X3 \! |7 ]
  10.                 // webclient.Headers.Add("Cookie", cookie); ; G1 {/ u% K4 t. D/ M
  11.                 //这样可能需要一些重载方法。根据需要写就可以了$ i6 e9 k; Y  k: \
  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)");5 k  G3 C9 T5 `7 Z! t
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");7 {+ s7 l* G& W- d9 w( B# G* ^
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
      |5 z/ j5 @. C; h7 X% x
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;9 v. S; k( B# R
  16.                 //如果服务器要验证用户名,密码
    ( S( C  f; V5 ?* m* h9 }; y% Q  m
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    % ?" n  t. E7 B+ [4 m: ^
  18.                 //myWebClient.Credentials = mycred;   B" k  G: a! h, n" r) ]
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ( Z: d4 C8 l/ e6 ?: f  {
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    " _4 v. o  u& z( E9 N, x
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);" f1 U( y. G2 x$ ~4 ]3 H4 f

  22. ! t' O- u, b5 t# R+ g! h0 _- Z
  23.                 //获取网页字符编码描述信息
    + _8 C$ V- A1 c5 ?4 P
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);% ~  Q4 x7 Z3 ]& I
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    , q+ v  m, L3 O  y
  26.                 if (charSet == null || charSet == "")
    ! t9 T7 N& @* Z2 P5 d( ]
  27.                     charSet = webCharSet;& H+ e5 }  _, c! i; A% @
  28.                 if (charSet.Length > 0)
    1 w8 Y9 O* C4 K
  29.                 {( O/ K6 Q/ E" D! W6 h9 ]
  30.                     charSet = charSet.Replace(""", "");9 |/ X; ?! r' W4 L8 [0 g! l
  31.                 }. ]% y) s4 O+ D, f9 U% a
  32.                 if (UseUTF8CharSet)
    . a; K0 c; r9 [
  33.                 {
    6 X7 a; U' Z% l
  34.                     if (charSet == null || charSet.Length == 0), C$ M1 \: [2 o# {$ J* n: [4 c8 L+ x
  35.                     {* p& k0 s9 t7 _( x3 ~  h% f+ Z
  36.                         charSet = "utf-8";6 ]/ j# k* N! ]; E( _! K
  37.                     }7 c6 R3 o( a8 R7 N$ z
  38.                 }
    - {- L2 h  f4 g3 P$ }. D
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default). Q7 _9 K- E. Z/ K  I! D
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);4 \* y' Y. G% m% {3 `
  41. 5 l/ v0 L6 c( D& u* x  I# ?9 N) P
  42.             }& R2 w2 c$ v5 a, A  w
  43.             catch (Exception), o5 A; _5 L7 C/ C5 U& W8 {) W/ `
  44.             {6 K3 x2 K# q# y; _
  45.                 strWebData = "error";
    9 y- L4 z- c' x! r7 n' b8 r0 U
  46.             }
    # m- r% y- l& N& l) G# \" h. _2 W

  47. ' S* l/ ~; c9 Q0 F; B- b: ]! F( p
  48.             return strWebData;( ]. @  G4 n, Y" K2 m2 [/ }
  49.         }
复制代码
7 L7 C* J5 v/ C3 }6 r, X; X# Y

7 L# G1 f  h" g2 D: k" d/ l
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-18 18:45 , Processed in 0.074304 second(s), 27 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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