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充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️Proxy4Free独家住宅IP池❤️免费测试联盟收款/海外资金下发/服贸结汇
域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 10020|回复: 7

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

[复制链接]

36

主题

211

广告币

295

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    * v( U* z. a% t: f  _: P! x
  2.         public static List<string> GetAllHref(string url)) m" z; W2 d# o9 _
  3.         {+ b' ~% F9 z" l& w
  4.             List<string> allHref = new List<string>();+ X. p* T+ ~7 t7 E/ Q& h; f; d" e& i
  5.             try
    8 U: o$ F3 c" p' H4 h! X" a0 `
  6.             {
    9 P; J1 v4 o3 Z4 D
  7.                 string strhtml = soso.getHtml(url, "", true);! h) F3 C- [$ w; o+ g
  8.                 if (strhtml != "error")
    ( C8 ?" C6 c; h. l8 v( t8 ^) q
  9.                 {
    1 ]& w  |3 ^; E
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");! N; u! M9 W4 a5 [7 R
  11.                     MatchCollection mc = reg.Matches(strhtml);
    * I  ~/ [4 C& _4 j
  12.                     foreach (Match m in mc)
    + M( w5 X/ d/ J# j
  13.                     {
    ; j, E' f+ V& G- a+ G) X7 ]8 e
  14.                         Uri uri = new Uri(url);  M! \& Z$ B5 L1 d% e5 L" c
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);  `# `, V! X( `. E" C# o3 H
  16.                         string fullUrl = "";* x4 E/ F: p& s: W- J7 F
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    . d: \( Q' t* _! @  U9 \
  18.                         {+ Y+ n- V5 f. T0 o/ w5 l3 N
  19.                             fullUrl = m.Groups["url"].Value;1 Q) ^% M+ \. r. x: [3 m+ O
  20.                         }
    & f1 V# O! E# q/ m
  21.                         else
    / ^: P: a0 K- g+ M& u
  22.                         {7 L6 a7 w9 S  v  `# i2 w+ }
  23.                             fullUrl = thisUri.ToString();( e  s8 Q: A) P& S8 u
  24.                         }
    * J2 _+ j9 e) k/ G
  25.                         allHref.Add(fullUrl);9 K& M& ~" w3 ]3 v
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);" V. ~! w/ }8 z3 t
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);0 \- k6 w" Z1 d% G  `) d+ W1 Q' I
  28.                         //Console.WriteLine("补全链接:" + fullUrl);; ^4 P. |: W& G8 F
  29.                         //Console.WriteLine("…………………………………………");/ B! K* s7 G  d& R7 c) e# X9 ^
  30.                     }0 K4 P% h4 i( L" I# {
  31.                 }
    5 J$ e2 C4 t+ T7 ], m3 n
  32.             }1 T  q0 M" P( n! e: R) _. k9 o
  33.             catch (Exception ex): e) {8 u! m+ w# T  v
  34.             { }* `$ D! V4 b! p
  35.             return allHref;
    6 x" }- m. F- I
  36.         }! J8 L( J; a9 d3 b
  37.         #endregion
复制代码

7 f$ _2 E! Z1 M+ U
2 V: \6 s5 M8 i9 `1 v2 W

  1. 6 B0 p& p, Y9 X+ {5 w0 u$ C! I: m
  2. * y$ p+ W0 s* [' s/ J! b

  3. 4 S- X1 l5 P. ~( E% ^
  4. #region 数据去重2 V8 X0 E7 u8 g  A8 Y) Q1 ]
  5.         /// <summary>
    # I8 k3 d: m5 a& E4 b
  6.         /// List<string>去重$ k; O0 i4 r* o7 y% t$ c
  7.         /// </summary>, [/ E6 X& Y* J( I) K
  8.         /// <param name="list"></param>
    5 Y1 G0 D1 p0 {& D$ Q
  9.         /// <returns></returns>
    + `3 s- z7 I4 U1 y- I) P: t0 \
  10.         public static List<string> getUnqueList(List<string> list)7 J$ w; p* f$ V2 M4 |$ ]
  11.         {
    * ^. Z+ R6 J& B; n$ l# ^
  12.             List<string> list1 = new List<string>();
    2 ~9 {2 W7 x6 o3 L  S- ?
  13.             Hashtable hash = new Hashtable();9 Z7 j% l1 W4 t% B
  14.             foreach (string s in list)
    0 N$ A1 L6 G5 e$ o6 k7 H: z, d
  15.             {
    : N( d* V: K7 n: u6 t; T/ U1 p
  16.                 if (!hash.ContainsKey(s))
    / l6 Z' m  e) D6 ]& Y/ \
  17.                 {0 Y0 @; R: L: h2 d) y0 `3 R! N* X" A
  18.                     hash.Add(s, s);
    7 u$ W: X  N7 {, a2 K; ?2 _
  19.                     list1.Add(s);
    2 ~0 l, C6 @) v' A; d7 L
  20.                 }
    4 z. T, A+ O/ ^0 t- r: Q
  21.             }
    ) n" G7 j6 f; P
  22.             hash.Clear();8 T% F: L) g& g% R& F4 Z# Y) g
  23.             hash = null;$ g: e- G" g$ f  F9 A7 j
  24.             return list1;, @" u- A3 W5 W( o" s3 |
  25.         }8 H* ^1 d8 m% H. ~+ m9 k
  26.         #endregion
复制代码

) ~7 y3 n1 r) h$ c, A" c& j/ Q# |
7 H4 p+ b, s6 A

点评

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

使用道具 举报

36

主题

211

广告币

295

积分

初级会员

Rank: 2

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

: ~5 u' F& ]0 {" X; V5 q. s十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
' G, [, H! G% G1 S8 p6 B十分感谢!!!非常感谢!!

; t; ]  o" e% A; T缺少一个gethtml,用下面这个:
+ ^" Z7 Q9 C; n1 p
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 $ l  [% L5 E* R* I6 R* r
  2.         {( U# ^3 g/ ?+ X3 f- _5 m; ?  \+ \
  3.             string strWebData = "error";: D: W+ G: W( i& W( d: Q; y
  4.             try
    . Y9 f9 d8 t5 u
  5.             {
    $ f# g1 P' U5 H0 H; @
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    & L5 f0 n6 G6 X# N6 r) Q8 o
  7.                 // 需要注意的:
    " @* J9 i- g+ j0 G" l
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    & r/ P, V( [4 `' E; J4 m
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ; [8 [( i- U8 [' X
  10.                 // webclient.Headers.Add("Cookie", cookie); - }0 `! Z8 V; W' K! T  h' I+ O
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    , Q7 N, `1 Y. H3 h$ I6 J0 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)");: C) G0 I# O. @, U  d. Q7 I
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    & L5 V6 |5 ~) H4 W, N+ e9 N
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 2 `1 J5 }3 ]" Z" Q
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    " V. v* L* w, ]* @- o0 M
  16.                 //如果服务器要验证用户名,密码 6 J  K( b, K# X  Y: Q( t
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    1 H4 \# _% U1 O3 G  G2 y- [
  18.                 //myWebClient.Credentials = mycred; 9 }. Z. u% z. }
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    + n: G- h( z6 S0 \$ ?4 M
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    0 |9 N$ Z0 o8 B9 i
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    + s# T" o8 a1 O( W( \) v5 L
  22. 6 M5 T$ o% @. S! G% n% u! R+ O
  23.                 //获取网页字符编码描述信息
    % o- r: [9 N( g& @; S
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);+ p1 j7 c0 B: _% I: T. t6 T
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    5 i( A8 C9 p( Z! `  a+ k
  26.                 if (charSet == null || charSet == "")
    # @7 ^  A& A( H- B0 k! K
  27.                     charSet = webCharSet;
    3 e6 @4 F% Q, b" G3 }
  28.                 if (charSet.Length > 0)8 f/ B# s2 x' }. u% S3 E: e1 m  }: |
  29.                 {$ Q  {/ w3 M& B
  30.                     charSet = charSet.Replace(""", "");
      ]5 h8 `. e4 m: w, T
  31.                 }+ @+ w& J9 L' p
  32.                 if (UseUTF8CharSet)
    " C$ `5 r6 P( y/ L
  33.                 {
    - Z$ n+ _& {: C: Z6 n/ P6 k
  34.                     if (charSet == null || charSet.Length == 0)+ G8 n6 t  k( {) g, `
  35.                     {1 K% H9 A1 J, |, o( J1 |, t! C
  36.                         charSet = "utf-8";; W/ {- f4 D8 J# F
  37.                     }
    & H; D1 [$ E3 c# f
  38.                 }
    0 H1 k' }9 T9 @4 N
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    7 {6 r1 L( D9 X: ~5 O, y
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    0 l/ o' C& S* w8 J0 r$ a. g
  41. # a( b% D( u" B7 L; d
  42.             }+ O% Y. X: W# H
  43.             catch (Exception)
    ; m' @  T- I+ G7 ], P- p+ V
  44.             {
    " L. |0 f2 p( [
  45.                 strWebData = "error";9 p1 O" h% ?9 D3 y5 Z) p7 Q/ V8 m
  46.             }
    0 t2 @* r- N# a) \+ p) O! g; [
  47. & ?" _& E3 G) n! [3 E8 X
  48.             return strWebData;
    ; c( }* X1 |  R' v3 `8 o5 M) b( O
  49.         }
复制代码

- e6 @/ J/ e4 E2 g  B6 X* P& j* Q$ ~% _
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-11 19:57 , Processed in 0.051786 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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