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找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9827|回复: 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 }5 O6 W% \; Q" @" W6 V4 ?
  2.         public static List<string> GetAllHref(string url)
    9 O- c2 _3 f6 c5 C
  3.         {
    9 T7 ~( m& w+ V+ j, r' i: E" ]$ `
  4.             List<string> allHref = new List<string>();
    ! P6 e4 T$ G1 D+ R
  5.             try/ n9 r# ]; ]1 }+ S+ ?; b
  6.             {
    ' R6 j7 D# M: J, d5 A5 c
  7.                 string strhtml = soso.getHtml(url, "", true);
    3 D6 E: u( q3 X# Q
  8.                 if (strhtml != "error")
    + |8 X! ?3 U! V2 a! G) A) @
  9.                 {- _+ V4 M: B3 z& |$ S8 F/ I
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    6 y7 @/ Q; l- o
  11.                     MatchCollection mc = reg.Matches(strhtml);8 ^8 x3 j! p; a6 _
  12.                     foreach (Match m in mc)
    & G( w" D  ]1 `' g/ X0 e" X( T
  13.                     {
    ; q+ r; J$ ^, m+ V! h9 O& j: A
  14.                         Uri uri = new Uri(url);
    + w; J  L: e/ J) L
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    3 o+ ?# Q7 s" n$ o
  16.                         string fullUrl = "";
    ! I/ Q7 G5 i. A8 m4 Q0 A' ]/ {* M
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    9 i  v6 W/ m+ U4 G4 G
  18.                         {- G) g, F6 Z$ ]7 V0 Y. b2 K0 l
  19.                             fullUrl = m.Groups["url"].Value;, g# a4 z* ?2 t) r
  20.                         }. z5 p6 x5 P  X& a) d- ^
  21.                         else
    0 E( T2 j- W7 A, G
  22.                         {
    ' H1 X2 k9 a. p/ J( B- W0 y6 A( n
  23.                             fullUrl = thisUri.ToString();
    4 N( H  ?( B& ?8 A
  24.                         }
    9 a; F" M  e2 t4 o" O7 N
  25.                         allHref.Add(fullUrl);0 x* H- o, {; _5 E7 ]6 C0 M; M
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);3 h; e: ~% I. }2 A0 w# R9 f
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ; |  C9 d2 s7 d& e# c& J9 a  H
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    & Z& S8 `- ^9 t* m4 i; P
  29.                         //Console.WriteLine("…………………………………………");7 H5 T. z2 x' W+ R* ~
  30.                     }
    + |* T" _6 S! m/ b) ~- b9 e2 Z
  31.                 }
    4 v( [* z" J, @- h8 A
  32.             }* `# z4 q) [1 m) g# }
  33.             catch (Exception ex)
    8 D2 Y' ?* R! d% R5 R; r
  34.             { }
    + t. t( }  r) b) @3 R
  35.             return allHref;
    9 g1 e: J. ?0 K. U: O' E
  36.         }
    3 h3 w, z, p) Y$ `2 S
  37.         #endregion
复制代码
% U2 s7 u% o. q9 Y9 @! w4 Y7 j
0 {& ^, _( o% R2 y9 G8 i5 {
  1. , d. U3 f! u7 l7 B1 s+ C

  2. - e: N+ j  E4 H2 `4 i7 S7 o! s
  3.   T6 v% n2 `9 h7 I- Z/ Y
  4. #region 数据去重9 G- X( P$ A  D& f4 X9 @
  5.         /// <summary>
    ) u; s- P8 \2 B9 n6 X
  6.         /// List<string>去重
    * {9 c" L) a* P1 H
  7.         /// </summary>1 C5 a7 O/ R; \
  8.         /// <param name="list"></param>
      G! X) v# y, M# U# ~
  9.         /// <returns></returns>
    3 _2 `( Z+ Z' }, J, U% S
  10.         public static List<string> getUnqueList(List<string> list)
    3 |# M) H3 q0 ^6 ^& j/ ~7 k1 l
  11.         {7 E+ u0 u$ {) z$ z+ v
  12.             List<string> list1 = new List<string>();
    ! ^/ \/ @; k, d) J) x% y$ A3 t
  13.             Hashtable hash = new Hashtable();7 q7 Y3 {6 @; t/ z% v! i6 @
  14.             foreach (string s in list)
    7 [1 I- f  g* {3 k1 p4 |
  15.             {7 d, M6 \& A0 W
  16.                 if (!hash.ContainsKey(s)): h: I# |8 K/ q- b: Z
  17.                 {
    7 ~: \/ d7 X. {. Q4 L
  18.                     hash.Add(s, s);
    6 T* a6 k8 N' h4 m' K
  19.                     list1.Add(s);% y7 H. l) S# j1 X+ Y- Z6 N
  20.                 }
    ; y# x" J6 z& g! Y3 b
  21.             }' H6 p! A) ~0 e/ {  Z/ P4 R
  22.             hash.Clear();7 `! l* t# M6 A( R( J
  23.             hash = null;# R+ s, w4 ]& a2 `
  24.             return list1;" k9 o' Y. B9 ?' J7 M* v
  25.         }" h) I  r" n4 ], w* C( Y% U
  26.         #endregion
复制代码
% \1 m7 y0 ?% w1 c% \

- ?5 y- [' e4 B

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
% m# H9 K$ k, E
十分感谢!!!非常感谢!!

点评

缺少一个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- W+ S, U  N* t) A
十分感谢!!!非常感谢!!

8 |5 M% J" Y3 i0 y3 \. v- u0 [8 X  `缺少一个gethtml,用下面这个:- _0 ?' V+ l. y
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    9 s+ J9 l( A, ]5 b
  2.         {
    $ A6 P& b" |9 K# \( p
  3.             string strWebData = "error";
    0 V, J1 L' K7 e- f9 a/ N) _" e
  4.             try: O2 C8 q/ i+ B3 O
  5.             {
    ( T6 y) V$ o% O: v
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient , I6 l2 A1 J2 v
  7.                 // 需要注意的: - Q' \+ H3 E7 U
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 7 }+ [: @2 o0 E5 j. c$ j
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    7 p5 \" J. s/ E8 S2 t
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ! u0 Y% F  Y1 q" }8 ^) ]
  11.                 //这样可能需要一些重载方法。根据需要写就可以了7 k( e" Q& a6 T9 N
  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)");% M; F8 F+ J7 {& n2 i: r% A
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    # n9 o7 k2 [( E; x  Z* m
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    # N; j; x: a: _1 m, T7 H* F
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ; ]# \+ Q9 {, G* ]+ d9 ~
  16.                 //如果服务器要验证用户名,密码 % \, D9 P7 M1 o) S6 h( D' O7 K
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    - `0 `1 G% C* F1 e2 i+ \) ]# i" ?
  18.                 //myWebClient.Credentials = mycred;
    7 c7 m) S- K1 G! L* \* X
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 4 [3 `0 F. U& u
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);& S3 _! z+ [2 c$ ]
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ! i2 m+ |; w* A$ Z# {8 H+ N6 x! ^

  22. # D2 P; o$ [( k2 b" p/ q$ F
  23.                 //获取网页字符编码描述信息 3 p1 x6 ~/ ?1 V  Z
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    ) Z6 }, m  M, z. P
  25.                 string webCharSet = charSetMatch.Groups[2].Value;$ }+ [$ F5 M3 G! ^+ f; O
  26.                 if (charSet == null || charSet == "")
    6 R' M% h* {6 o- a: c. w& g1 Z% t6 k
  27.                     charSet = webCharSet;
    ' A/ T& @  q; T
  28.                 if (charSet.Length > 0)+ ]4 V) U: ^+ ?1 B5 q3 P
  29.                 {, F* O! B( e& u! I- k9 |2 A% X
  30.                     charSet = charSet.Replace(""", "");
    / b( H- i. p8 _- E3 K8 U
  31.                 }9 z# t" W8 @7 B3 P5 H& ]! b$ o
  32.                 if (UseUTF8CharSet)
      i. ^( c3 H' Z, o% f3 W
  33.                 {
    ) j% V' Y0 Q/ B( R$ V& s
  34.                     if (charSet == null || charSet.Length == 0)
    - I0 J8 W1 p  @% M5 P/ ?5 ]
  35.                     {- X% f# U6 k  f! D0 }+ p$ s- z, l
  36.                         charSet = "utf-8";# l/ v, R5 Q( G4 u7 o" z0 J
  37.                     }% p  w0 C4 {7 g$ K( I, X
  38.                 }5 ~: _% c# `6 x$ Q% X
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)  O) t4 Y: C' g# x: h
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);2 T) W- l' \/ b1 C6 Q4 s% k8 d
  41. ) R7 z# ?9 l# z# u  |0 L
  42.             }) O: V6 }; o; n7 q( _
  43.             catch (Exception)/ e  M+ [6 i7 i  e2 p5 u
  44.             {( [7 x, Q. @  T) y
  45.                 strWebData = "error";
    7 K5 w1 L% a* q0 S& C0 U. ~
  46.             }8 _2 Z( u/ X6 o

  47. - {0 L/ l. j' V8 e0 ^7 s# V
  48.             return strWebData;
    - o+ c" ?9 M! E: d
  49.         }
复制代码

* E# U$ r2 }/ r/ S- x4 A" y; A
4 [& _3 J( Y! U5 ]. j) A, }
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 20:28 , Processed in 0.051085 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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