找回密码
 立即注册

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加白户联盟收款/海外资金下发/服贸结汇⚡️Spend.net — 美元卡仅需$0⚡️✔Taboola海外户
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10190|回复: 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 抓取全站链接2 f- L6 A& z! w7 S! b3 d
  2.         public static List<string> GetAllHref(string url)- O% t9 z4 v- u" T. Z& Z
  3.         {
    # O. J) k  J  F) C' K
  4.             List<string> allHref = new List<string>();
    4 y% Z9 T+ I7 }) A
  5.             try
    * t( [" {6 y0 R& g! N3 \
  6.             {
    7 K( Z7 u: p& h# t. D, J
  7.                 string strhtml = soso.getHtml(url, "", true);
    2 Z+ m& o+ j# C* N4 M, H. R
  8.                 if (strhtml != "error")
    ) f8 u9 ~; u& F% g7 }; f0 L) f
  9.                 {
    2 D# f6 S+ E' o8 w
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    $ @% D' E2 Z; O
  11.                     MatchCollection mc = reg.Matches(strhtml);. \; P+ {) @, N
  12.                     foreach (Match m in mc)
    , L! r9 q2 y- s, j5 f
  13.                     {
    5 {5 B' G6 ]6 G' X3 F* k- e5 X( ~
  14.                         Uri uri = new Uri(url);% M: U+ Z* Q: w5 y
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    & V8 L! g* @; |+ W- B
  16.                         string fullUrl = "";1 Q  E$ p) p. m; A* Q2 C
  17.                         if (m.Groups["url"].Value.StartsWith("http"))) N- O' j: j: M
  18.                         {
      U+ ^: D. o4 i
  19.                             fullUrl = m.Groups["url"].Value;2 e' h: P% G+ w. ~; p' A% A
  20.                         }
    8 o. m2 ?6 }0 N7 L' h) N" B* n
  21.                         else
    ; z4 I1 O$ [- q4 q, T2 h
  22.                         {/ d# _0 m1 x* z
  23.                             fullUrl = thisUri.ToString();
    ! x5 S8 `4 M$ r  L$ ^1 s
  24.                         }3 p; P. i" U# d* t; D
  25.                         allHref.Add(fullUrl);. L2 ?, v; i$ R" d: Z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    7 r# `( T* F# v6 B8 W5 y
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    & T4 d* w  V5 ]; N) N; W$ k
  28.                         //Console.WriteLine("补全链接:" + fullUrl);) ]+ T; f& N; R1 j& |* {
  29.                         //Console.WriteLine("…………………………………………");
    % N( H0 [; w0 A) L2 e; P
  30.                     }/ B& K9 j% T4 \2 v; u* q0 z3 q# l0 c
  31.                 }
    " I9 m% v5 ]. U
  32.             }
    $ w& G8 W) A6 @6 i( e! u
  33.             catch (Exception ex)
    ' Z8 j! S* B2 h' Z: C
  34.             { }
    0 w) X3 M. N* R' r9 |0 |9 _& q
  35.             return allHref;
    " X/ Q- i: J  `5 _. q5 I5 O
  36.         }
    3 D$ x! x9 S  V( `5 [
  37.         #endregion
复制代码

9 f/ {" q' \  L4 U( B! w
# {" s1 ]9 x* T0 W

  1. " X! t2 G# n" E

  2. ) G) q0 C) _9 k+ I  F* u1 ~
  3. 6 {( P  l1 b8 f+ [1 d5 H
  4. #region 数据去重
    ) b/ A' V7 m9 v, O& C+ X
  5.         /// <summary>
    ( D! y! r% `7 t/ \5 `: n+ \
  6.         /// List<string>去重$ f$ K% W. i( d# z9 I
  7.         /// </summary>& Z( i7 V% s2 W3 ~
  8.         /// <param name="list"></param>* _2 [5 _/ n0 x6 s
  9.         /// <returns></returns>. m5 B; q6 B+ D' U0 v4 U
  10.         public static List<string> getUnqueList(List<string> list)5 t! ]5 d% |# E& _" @+ N
  11.         {
    8 \" U& H5 ^. Z# E3 y; Z
  12.             List<string> list1 = new List<string>();
    1 a0 e7 B; b  Q/ [4 }  |: c# q" M
  13.             Hashtable hash = new Hashtable();
    " z' t, W0 }9 X& U" E- h* y' L
  14.             foreach (string s in list)
    ! h( D& r9 h& h/ M
  15.             {
    % p, L3 }" w  Q
  16.                 if (!hash.ContainsKey(s)), B2 S/ Q3 ^; k4 c! I2 E
  17.                 {5 t/ t' u2 C# \+ y
  18.                     hash.Add(s, s);) }5 u1 ^  `9 c( S; Q% _
  19.                     list1.Add(s);
    * n# y$ C% ]- f" X, R, \
  20.                 }" p# |3 P1 x. l7 I, A
  21.             }8 M& }& ?( J$ R5 c2 }; C! q/ r2 R
  22.             hash.Clear();0 D0 U" ?) ^4 }9 n) D2 t, b
  23.             hash = null;; t1 L% a- S, a; ^# S0 R! I
  24.             return list1;
    + u1 y. o2 v( ]& C; k( r! x
  25.         }2 h" r: g, ^+ J- ?% V
  26.         #endregion
复制代码

9 C/ H& B# L: N7 s% K% k! g( A) }% B) [. W

点评

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

使用道具 举报

36

主题

213

广告币

297

积分

初级会员

积分
297
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
7 N( |* z8 `& I0 f  `# ?$ M4 L
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:207 q' }" D+ s8 |' W+ U
十分感谢!!!非常感谢!!
+ D+ H' \8 ^- }1 ~. r5 E2 \
缺少一个gethtml,用下面这个:
* ~4 v. T5 C% c8 s( L' A% S" g
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    3 j4 W* c$ z' v9 m, W- v! Q+ }5 o
  2.         {
    . |5 C. v1 r1 e, p# {9 Z( u
  3.             string strWebData = "error";
    8 Z* Z: d' b% p; Z8 r8 I
  4.             try& k2 k0 H! h7 v0 |2 p
  5.             {2 f9 Y0 A& |0 U' j* m5 d  o
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 3 U  ^3 F$ h% F0 ?+ v
  7.                 // 需要注意的:
    % D, z1 [0 H) O1 C" E  ~! }
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 - e6 b8 c& }7 `. Q' W# _3 q, x3 L% G
  9.                 //这是就要具体问题具体分析比如在头部加入cookie , y2 b3 s- }$ @/ R1 e) _- @
  10.                 // webclient.Headers.Add("Cookie", cookie); 8 i1 f" @, d  w: Z2 o4 Y( N
  11.                 //这样可能需要一些重载方法。根据需要写就可以了7 a' E5 ?1 e/ O# P2 [; ~
  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)");9 R/ e5 W. ]; Z6 d( M
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");# I$ v# g8 U% ^" P1 X+ v  V
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 & l4 G$ R) ?& z) o
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    4 s, D  t" Q3 f" C( s- v) E3 B5 N* x
  16.                 //如果服务器要验证用户名,密码
    9 V" Z1 K2 H8 ^# f
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    1 E/ ^) v' t, E" |: ?
  18.                 //myWebClient.Credentials = mycred;
    ! }4 a/ y9 E( I" W6 J* h6 ?
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ; M% [; p( f: o9 o2 |0 A
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);' C  W/ i# q( }7 s4 P
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);5 d1 \  \! V# Y) S6 @$ \

  22. 9 x, g- V  z8 w
  23.                 //获取网页字符编码描述信息
    ( |0 f" n3 T  b0 }
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);8 b& Y/ f1 T3 ^8 P
  25.                 string webCharSet = charSetMatch.Groups[2].Value;( w0 G* m; L4 z- z
  26.                 if (charSet == null || charSet == "")7 l  c7 i4 i. S9 b8 }$ }# U# x
  27.                     charSet = webCharSet;( }* j) m( s& t9 V
  28.                 if (charSet.Length > 0)5 x) G- I% p- \. w4 {. i
  29.                 {, E/ Z( u2 e4 B+ ?8 h5 V: v+ ]" [
  30.                     charSet = charSet.Replace(""", "");
    ) @  c' Z1 G4 }7 T1 m( G
  31.                 }9 f6 A) d( }8 x5 T$ ]
  32.                 if (UseUTF8CharSet)
    2 N! N6 A( X' ?/ E$ \. r
  33.                 {, J. z: g& u: y: m  C$ X5 [
  34.                     if (charSet == null || charSet.Length == 0)
    ) w7 g: Y' H9 J) a+ @
  35.                     {& H! h6 ]$ n' V7 c& V) m2 L: ^
  36.                         charSet = "utf-8";
    7 q" _& `# P/ M9 u0 Q+ x) r
  37.                     }
    . u1 o( @! a0 a
  38.                 }8 Q  r2 t; i* ?
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)3 [9 q5 p2 k  d# K- P  O& F7 K4 N
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    6 v( g# o: F5 ^! @/ ~2 q. m1 |

  41. ! O5 P$ N' G4 W, C( t: w  m
  42.             }( Z4 D1 q: j, p) X$ y
  43.             catch (Exception)  z; b& N7 R( e! a/ d
  44.             {
    # G2 \. e2 [+ j1 l6 N4 G5 ^, v
  45.                 strWebData = "error";
    : u0 H7 U- J; k2 L$ }2 R3 G
  46.             }
      y/ \& i' t# l2 j

  47. 1 p, d+ q8 A" J$ p& h! F4 x& c
  48.             return strWebData;7 u) E7 g8 d# ]
  49.         }
复制代码
, Z- ^; r: [5 h& e4 b
. Z( B- b, G% f
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-9 02:29 , Processed in 0.088293 second(s), 31 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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