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+ 地区广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9839|回复: 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 抓取全站链接8 ~% f: t! L; V
  2.         public static List<string> GetAllHref(string url), C8 {- o# @: q& l, ?
  3.         {5 o' Z; E1 p7 C  h3 i
  4.             List<string> allHref = new List<string>();
    3 M7 D2 v3 `- V; d' D0 x6 Q: Z
  5.             try
    ) }- A: s0 U+ J& c
  6.             {
    3 ]9 C" X# I: j8 c2 @' M
  7.                 string strhtml = soso.getHtml(url, "", true);
    8 i' `2 c. J* M3 ]% _
  8.                 if (strhtml != "error")
    : K3 i& k' Q3 w; A
  9.                 {
    : V/ _/ J* t6 s) \
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");% r1 L2 {) c' y
  11.                     MatchCollection mc = reg.Matches(strhtml);
    # W% c) c( A9 {# E. f" Q1 r
  12.                     foreach (Match m in mc)' u" s6 E/ A* e; K; ]
  13.                     {3 s& i* a9 |- ]9 g1 T
  14.                         Uri uri = new Uri(url);
    ) ]  T! J" Q$ X5 e
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);1 G1 l2 G/ T0 P8 e  [& _( f4 _
  16.                         string fullUrl = "";
    ' C* ^8 ?5 F; V
  17.                         if (m.Groups["url"].Value.StartsWith("http"))& w0 E3 S0 J# {0 y& o$ g& B+ b
  18.                         {+ ]# [7 G" ^" U2 u/ N% s
  19.                             fullUrl = m.Groups["url"].Value;
    5 `1 x) z# v  V* ?% I
  20.                         }
    # X0 g& H3 I8 g2 E
  21.                         else
    ! B( r7 x8 [1 I  R1 F3 C
  22.                         {
    1 |; k  J" D( H+ T, R* J
  23.                             fullUrl = thisUri.ToString();
    ! u3 O7 q! F$ @! \) O$ p
  24.                         }! @0 w3 J, G& U
  25.                         allHref.Add(fullUrl);
    ' ^6 f8 ?" X0 t$ h
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);, y2 ]' _9 J1 f0 r' R, B8 \
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    # H( u& W) @1 |% p) L; D" O
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    3 r. C$ d( S4 {* ]
  29.                         //Console.WriteLine("…………………………………………");! d& G- o. V2 C/ q' \% o% t
  30.                     }6 u, H2 H; w) G% }( ?
  31.                 }2 a9 B) W, N* W; J& n
  32.             }
    * P) C$ n$ Z: D; ?4 j
  33.             catch (Exception ex)
    % `- t( {: J5 Y/ I" e# i3 v
  34.             { }
    ! I/ D0 s7 n4 x# Q. ]7 N9 Q( r
  35.             return allHref;
    4 g: j; E4 m4 @3 n7 |
  36.         }
    3 f8 m. ~: ?4 ?
  37.         #endregion
复制代码

1 ?' J% o; J6 z9 y+ j& U/ s0 \9 Y) l, \' H/ ^  n
  1. " B4 O- C6 K' Z/ T  c& P
  2. ! B* Z3 J9 s3 ^

  3. , V6 J2 }  `+ B, v
  4. #region 数据去重- R& \' C# S, w4 t8 E
  5.         /// <summary>' F+ o. U9 ?1 d% Z
  6.         /// List<string>去重) o! m* ]$ ?  c+ d
  7.         /// </summary>
    . ]7 ?) O7 k! w5 C9 G
  8.         /// <param name="list"></param>' _: m2 s2 ~. W: {2 X: R
  9.         /// <returns></returns>
    - u5 S& M! g# X3 b
  10.         public static List<string> getUnqueList(List<string> list)4 u0 M1 u: _5 z" w# }- L9 |; I
  11.         {
    ; I& Q) l' a1 [! A
  12.             List<string> list1 = new List<string>();8 O' l' @# M+ u% h! ~
  13.             Hashtable hash = new Hashtable();7 ]# b9 H2 P3 V, y' D( P# C+ K1 j
  14.             foreach (string s in list)
    2 K5 t5 k5 y8 V, S+ \7 C# X
  15.             {9 f- `* u: n* ^& L# s( f
  16.                 if (!hash.ContainsKey(s))
    0 M' L& ]3 a5 d6 d
  17.                 {
    0 l7 Q' f5 H6 Z0 J3 Y$ S
  18.                     hash.Add(s, s);
    ) [! P+ C% w6 Z  @; {5 h! D) V; q4 _
  19.                     list1.Add(s);$ T& j0 P4 [& A( x1 J, b: v
  20.                 }
    & ^# g. `) O) m) E# o
  21.             }
    7 E, a3 i+ V! Y, ?, Y0 X* h
  22.             hash.Clear();& ?$ D  V* X1 B# |
  23.             hash = null;5 }6 Z7 Z0 a' Z6 d
  24.             return list1;- s% _1 ]* v, B# p1 m& H. B3 k
  25.         }/ p4 ^, |0 s" E5 N
  26.         #endregion
复制代码
( W# v" `' j- G4 N8 z( S
9 @+ B0 H' K# `9 n# e0 w- f- D

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
+ [& d; q( B2 h. X, }
十分感谢!!!非常感谢!!

点评

缺少一个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
% ^1 G- r2 W; U1 n# c十分感谢!!!非常感谢!!
( W/ U6 g( [1 _
缺少一个gethtml,用下面这个:( a' t, v- n) e# d1 z
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 * ?. b$ m: R$ Y& Y7 K
  2.         {5 f% B" J2 j9 {3 Z& j+ @
  3.             string strWebData = "error";
    1 S8 ]. C* I% q- Y! `
  4.             try
    * ?1 C, s# N) w+ e
  5.             {0 o( W7 W, E" z. {  Q
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
      r' Z4 S# T! N* [
  7.                 // 需要注意的:
    9 _+ v: V* k/ C
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 , u. ]; f1 a; `% u3 D: M
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    * i. `# T, w! O8 K1 U
  10.                 // webclient.Headers.Add("Cookie", cookie);
    7 G5 X- d$ r* G3 _: \* Q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    5 L. q: O% B: b) e5 h
  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)");3 R+ f) k) s5 f% j& e6 g0 B
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");2 S4 T8 [; P. l6 E  ^
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    $ i# `9 i7 t* t8 I/ j
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    + J( I2 R1 q! G& |% p, J* {) }* c
  16.                 //如果服务器要验证用户名,密码
    ' F5 d7 n1 O: ?, h
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 3 Y1 o9 M1 n' D/ @7 o
  18.                 //myWebClient.Credentials = mycred; 6 L+ w2 j, {& F  q) [: i1 @
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 1 g3 w' }% _" S( V5 b
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    . m# `% Q, [. L( ]
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);& a& c! C: Z7 u* ~# q
  22. ' \9 Q4 Z0 W$ `  M, g
  23.                 //获取网页字符编码描述信息
    / `$ w6 e/ I& T/ [+ ^
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    9 n6 X. j' n, q8 u# b
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    6 P- ]( }" f9 M
  26.                 if (charSet == null || charSet == "")6 }: c. Q  {. q
  27.                     charSet = webCharSet;$ }2 Q8 j5 Z7 @" L8 u# G% O, z
  28.                 if (charSet.Length > 0)
    4 h2 S0 |+ D- E9 C4 {
  29.                 {
    " O7 J! k$ }3 I
  30.                     charSet = charSet.Replace(""", "");
    9 J9 B1 h4 o0 l8 N* W2 I/ ?% s) s
  31.                 }
    $ X/ v, m6 @) i
  32.                 if (UseUTF8CharSet)" h( v( P4 f+ L* y' H" W
  33.                 {2 L' H" B, u' W1 |) l9 ?7 c1 V
  34.                     if (charSet == null || charSet.Length == 0)
    / ]; Y& U! ^8 C$ @9 b0 ]$ e* z1 R
  35.                     {6 E4 J; p1 z/ C* ~
  36.                         charSet = "utf-8";3 ?3 I/ n9 k1 ]$ {# }
  37.                     }# o# c1 _( z6 [( Y0 ^
  38.                 }
    6 ]8 I  I. f: C$ L! d  c8 {
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    # ~% w( v: b3 y0 H5 l" E5 G
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);9 l+ v$ ~: }6 \; v7 k4 K

  41. : ^1 q6 _3 i$ f
  42.             }' C# u5 [* T' Z! I/ Y
  43.             catch (Exception)
    ( ]6 t. I8 Q* P6 f" P4 Z4 l* c
  44.             {
    # [0 P  J( }3 ~0 X0 S
  45.                 strWebData = "error";, q/ M- I% P6 g. R5 @3 x- _
  46.             }
    6 q0 D, p. o" U& j
  47. 1 J+ W7 m4 o: O# G7 E
  48.             return strWebData;0 ?; E+ M& w8 i6 \1 m3 t
  49.         }
复制代码
+ B7 J* F+ A# h; m
0 `6 l* ]+ \* Q
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-8 16:23 , Processed in 0.052180 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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