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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9752|回复: 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 抓取全站链接
    - \' `) G6 V' J, }  n3 |2 M' I
  2.         public static List<string> GetAllHref(string url)
    1 {4 k( F$ w! K- P( o5 M
  3.         {  u) K: N7 T7 ]3 ~3 c; l
  4.             List<string> allHref = new List<string>();2 u5 D* L- R/ f" t
  5.             try
    0 }: I7 d: ~  }: |6 N
  6.             {% [" [4 u$ F' f6 X4 t
  7.                 string strhtml = soso.getHtml(url, "", true);8 J) o7 h: Z6 d- d$ {- [3 I. _
  8.                 if (strhtml != "error")
      ?: T( M3 W8 P6 U5 P( m
  9.                 {
    0 b( \, p. b$ X$ `( P7 \( n, o" d
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");% o9 k+ G0 @9 u1 V5 y% ?- z" C
  11.                     MatchCollection mc = reg.Matches(strhtml);
    0 C6 R' E! e; _$ v
  12.                     foreach (Match m in mc)& l* H+ `1 }, t; g2 o# m- I
  13.                     {
    " ?) u9 B# u9 C* K
  14.                         Uri uri = new Uri(url);
    ' m# J7 \; T/ Q: Q# q6 b1 @
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    2 f* _  q- z: G8 h4 u
  16.                         string fullUrl = "";
    ; o, p( W  O/ Z! P8 c( D
  17.                         if (m.Groups["url"].Value.StartsWith("http")); O. N( L* P1 e1 b4 i" O/ {
  18.                         {* z$ b( P( h8 }" Y+ n) b
  19.                             fullUrl = m.Groups["url"].Value;
    , n7 d& U- W7 C
  20.                         }
    . [; K5 A; ~3 `, a
  21.                         else- P" @- o) S) L8 u: R7 }
  22.                         {
    & l3 g+ E1 K3 R, [- v8 @5 W# C3 `
  23.                             fullUrl = thisUri.ToString();( E8 Y; G* a2 z- a1 [& g( m
  24.                         }
    ! T2 h: w" X/ o/ r* ]' S$ V
  25.                         allHref.Add(fullUrl);
    / E9 D4 m; C( r% x
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ) H$ _6 p4 r2 J! N7 H& l
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);$ `; i) F9 ~. H2 t$ ~0 \6 l4 z
  28.                         //Console.WriteLine("补全链接:" + fullUrl);+ x$ F# Y6 F9 f5 ?! X5 B% Z. G& g! w
  29.                         //Console.WriteLine("…………………………………………");
    : Y" s2 m5 F+ f( y8 v% |& Y, d( X
  30.                     }! W; k0 W* ]  c, n5 [# h
  31.                 }
      F2 w  j, Y1 g
  32.             }
    / @8 p  P1 [3 C/ ?% W
  33.             catch (Exception ex)
    " u' y# Z7 O3 w+ U$ |  g/ E
  34.             { }: n7 u  z! J3 O( K* k
  35.             return allHref;
    3 V9 o4 |5 j$ w# f* s6 H
  36.         }
    3 f. h; ?$ y2 c5 o5 D# C
  37.         #endregion
复制代码

4 }5 q4 j& E' O+ o+ Y/ _8 N3 Z$ D5 L% {" V$ p

  1. % P& R2 S4 `" C( {; y* f

  2. / v9 N4 G" }7 l" @0 G$ f

  3. ) G! z* ]: A; H# d9 m2 ~  d
  4. #region 数据去重3 F/ I8 d0 M/ G0 Q2 O$ m8 j
  5.         /// <summary>  o% T5 i' j: _7 U, B0 }
  6.         /// List<string>去重
    + y; m4 {; k; a2 j: \+ t, z+ w
  7.         /// </summary>1 c0 Q6 L% M( t. l$ @' u( S
  8.         /// <param name="list"></param>
    7 S$ `/ h0 s+ D+ X+ M- ?0 N( U
  9.         /// <returns></returns>
    * E8 O; F7 c7 H. i) W
  10.         public static List<string> getUnqueList(List<string> list)
    $ x# E" u1 M* \1 h7 J/ O* n
  11.         {* c" J- _6 k! F1 N
  12.             List<string> list1 = new List<string>();
    ' T( J2 x  I9 Y1 t- }: \6 @
  13.             Hashtable hash = new Hashtable();2 c1 k- }1 j8 |& h& s! `  R
  14.             foreach (string s in list)+ Z. L( J/ O: R% [  \
  15.             {5 f1 j- D: B* Z
  16.                 if (!hash.ContainsKey(s))8 v  a% t2 h& t0 [) u  L0 Y
  17.                 {! L% [* w$ Q+ b! q( }$ f+ S" v5 c3 P  s
  18.                     hash.Add(s, s);
    + V) Z2 w( }5 m2 S; v7 a
  19.                     list1.Add(s);
    % W8 r* O2 C" y  Z* c( w
  20.                 }( S& t# D* ^5 {- Y
  21.             }
    ' q& b: }" `5 }+ e/ [- B: c0 B7 _' Q
  22.             hash.Clear();
    : z+ C& V" v# a% i
  23.             hash = null;1 Z1 t$ `. ]3 v; R% R* E7 J# J
  24.             return list1;9 {2 S: F/ |/ x
  25.         }" o, k/ I$ Q: D, B2 |- M
  26.         #endregion
复制代码
- S9 o% m4 \' n
/ V" i; a8 I. J8 o& t

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

9 Z9 q; L' B9 @$ j- M7 U( Y十分感谢!!!非常感谢!!

点评

缺少一个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$ s) e7 C1 |! K3 n
十分感谢!!!非常感谢!!

3 S' `4 `0 o( Q, K缺少一个gethtml,用下面这个:6 O9 J7 B! A" V
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    $ }* o' C3 B9 A- C
  2.         {
    0 G6 K' [6 Z% F, f# v: ?* N' b. ]
  3.             string strWebData = "error";
    # \5 Q1 [  Y! Q1 n# D+ _
  4.             try3 W6 ]% N8 U# W8 H. ~4 U
  5.             {
    7 ?% j' ?( H  H6 {
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient / S% x% \: w1 }) I& I5 j
  7.                 // 需要注意的:
    / {( t, i1 `2 o, }
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ; o+ C/ G) t4 Z6 E# c
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 8 n, _+ R  I2 F/ h  j
  10.                 // webclient.Headers.Add("Cookie", cookie); * C- K- x/ m; L. g: q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了9 G1 B5 W0 S2 f5 f( f9 D
  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)");
    0 M$ U. r. ^+ o
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    : y' g" p- e! u' P, ]( Y
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    6 ?; W$ I  d/ i( x9 {( h
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;5 |( B; c# Z9 O' F0 R+ F) v% U; J
  16.                 //如果服务器要验证用户名,密码 ' l* B  |) u6 q/ `2 {9 k7 O
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ' P" p9 ?" Z5 k5 `. Q
  18.                 //myWebClient.Credentials = mycred; 3 I: ]" k$ p& T9 E5 y7 U3 G: y) F
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ' c$ p: e) [# x, y
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);5 q* N: s* f  F: ^  f3 w1 e; N
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);/ ?9 m' X! o/ Q6 o$ ~$ Z+ Z

  22. ' Q2 [" e0 Y) O, W7 Y8 \
  23.                 //获取网页字符编码描述信息 * \0 L* L! D" p  K/ \
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    " T& ?( p. Z/ I5 u5 d  R
  25.                 string webCharSet = charSetMatch.Groups[2].Value;; j" C% l; D0 ?+ Y" [+ q' H7 ~
  26.                 if (charSet == null || charSet == "")6 C0 S1 k# `+ x- J+ A
  27.                     charSet = webCharSet;: T* C" r' h: u! S
  28.                 if (charSet.Length > 0)( j8 j+ r7 A0 Y$ R+ X! @4 K
  29.                 {
    ' ]! J! f5 ?0 W! L# M; n
  30.                     charSet = charSet.Replace(""", "");/ A" G* X( [9 m% s' |" x& i
  31.                 }
    $ K$ ?! }- J3 V' _: m! R1 ~
  32.                 if (UseUTF8CharSet)3 s" G' M- N$ c( ~6 Y
  33.                 {. k1 Y% N0 ?: ~( T; g
  34.                     if (charSet == null || charSet.Length == 0)
    . N2 L( A2 w0 t( ]& d" }0 x9 @5 ~0 K  `
  35.                     {
    : y/ U) S/ @( W: [
  36.                         charSet = "utf-8";- I7 d7 p& m* ^
  37.                     }' h  v3 i* v% [" H1 J
  38.                 }( \' b1 B7 O3 T+ H# b
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    & F1 d( K: B9 V' j9 r
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);! n( z. G, Q* x+ B8 Q7 A
  41. - n) y' x( @% F. p" e7 H
  42.             }% ^: q8 x6 ^1 O: T6 O0 }
  43.             catch (Exception)
    5 D# q9 U5 b4 D* E
  44.             {
    . ^" O' Y. e/ v8 N
  45.                 strWebData = "error";  \7 ~  W8 J6 h$ e0 X* ?
  46.             }4 i. ?/ j" F' V' ]: v: y
  47. . s1 x, S8 D0 b9 A
  48.             return strWebData;1 a2 Q6 W3 j0 L# u, Y7 g9 F
  49.         }
复制代码
* H$ y2 }1 J+ a' T4 }
7 K- e6 ]# Q! E4 e- B+ ^6 @
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-15 11:13 , Processed in 0.051731 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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