找回密码
 立即注册

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/条双ISPTK加白户/二解户/FB海外户/GG老户海外CL企业户源头
最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审GG,FB,TK, 欧美源头, 欢迎合作❤️FB企业户海外户,授信户,TK加白户
联盟收款/海外资金下发/服贸结汇✔Taboola海外户9千万住宅IP-低至$0.3/gb✅静态$4/ip广告位出租
虚拟卡返佣1%,国内持牌机构   
查看: 10219|回复: 7

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

[复制链接]

36

主题

215

广告币

298

积分

初级会员

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
      i+ o; ]  j& d5 K3 y* q
  2.         public static List<string> GetAllHref(string url); G- B8 c8 U" Q- P9 i3 C
  3.         {# h' w1 W- b; P6 A2 V
  4.             List<string> allHref = new List<string>();
    ' C9 w4 ^3 U5 ?: W% Z. G& Z
  5.             try
    1 L& D+ M& b4 P* h
  6.             {
    & l/ D7 p7 |  V5 h
  7.                 string strhtml = soso.getHtml(url, "", true);
    / w5 U; f: n2 i' z+ f
  8.                 if (strhtml != "error"). h4 ^0 d4 m- P6 Y- o
  9.                 {
    & S# S- ~! t) N, s" G* X; {$ m
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");8 o# W1 X$ g) m0 x) e+ a# I4 c9 _
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ' Y4 z7 i$ |2 U3 i# ~& T3 o5 m9 S
  12.                     foreach (Match m in mc)
    5 E! i3 @3 X& E! H1 c* f' v
  13.                     {
    % H  b0 R% m' i; q, X
  14.                         Uri uri = new Uri(url);
    . y3 j" _# ?6 R* k1 i" q( p( R6 ]
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    : H. D) w2 A# X4 U1 T  I0 r
  16.                         string fullUrl = "";
    - t  Q0 G" o& a' w  T2 W4 O6 P/ g
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    8 ?% x( r) E8 P2 r
  18.                         {: S, y# L2 L7 v, ?* P0 a; D
  19.                             fullUrl = m.Groups["url"].Value;
    - H7 J% w8 g& O& @: W. g: Y+ ^9 O
  20.                         }. a/ j3 m$ ^2 J8 s$ W) H% E
  21.                         else1 l6 Y* P8 _7 |: @3 a/ n
  22.                         {+ }( I* p9 a; z) \3 k* ~: ^( N& T
  23.                             fullUrl = thisUri.ToString();& ~1 W9 m. }3 ^( b+ M, b  U; i
  24.                         }
    % _, c4 L0 F  E5 Q) o
  25.                         allHref.Add(fullUrl);
    . L  L, n, o/ {8 a& @
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);& d( Y( p, `7 s+ H* z7 L) {; p
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    : h- N% I' A  L* z
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    0 s! J0 {1 |0 ?! x3 P4 h
  29.                         //Console.WriteLine("…………………………………………");
    # ]6 v) ^- h: o7 n. a# |& d8 b! J
  30.                     }
    & K( q1 O4 G/ s5 a1 w+ y! {' y  }
  31.                 }
    ) t% S; W' Q2 s- s7 M
  32.             }
    ' L2 i2 E+ L7 ]* u
  33.             catch (Exception ex)! s7 _# b3 r% J" |* B0 i* I: g. B8 S
  34.             { }
    * b" x+ ^! t6 ^. `1 a
  35.             return allHref;+ N' x) J/ B& F+ u- w
  36.         }4 h2 M; b8 S& H4 ]
  37.         #endregion
复制代码

* P/ z& s# Z4 j5 M/ P- e9 t2 K& b# y% f# y" O" V

  1. & s% h7 H$ X: ]+ C$ j

  2. ( Z4 b3 f; g; }: N2 n5 B' {# z
  3. " i: T9 D/ O7 A! o2 E
  4. #region 数据去重  D1 H6 g' Q) R0 ]9 e, Y9 c# s
  5.         /// <summary>
    ) r9 U4 F1 `5 s
  6.         /// List<string>去重5 S  y) V: l6 Z5 G& P
  7.         /// </summary>: t+ o, B, ]+ g+ M2 B& Y, J1 |
  8.         /// <param name="list"></param>* C- Q" a1 z0 L' ~7 y8 w0 J3 r
  9.         /// <returns></returns>
    , D7 E. ?/ M4 _+ o( z' q. Z& F
  10.         public static List<string> getUnqueList(List<string> list)
    4 z  ^; C! J" O! I& Y* f8 s
  11.         {8 H/ k' ]  C: Q, [0 q/ t: [& b
  12.             List<string> list1 = new List<string>();
    4 E$ P/ ]& t, {9 A# q* z5 ~
  13.             Hashtable hash = new Hashtable();
    % D. o4 X+ Z+ p! D# ^9 R- P
  14.             foreach (string s in list)& _/ q- s$ x* b/ M  e7 [3 g4 O% ?
  15.             {
    ' O+ s" `5 z( w: f' ]- Z! V
  16.                 if (!hash.ContainsKey(s))- ~' j3 G( ~' v( c. k+ V
  17.                 {
    % [* R+ P0 X/ I6 ]( P
  18.                     hash.Add(s, s);& o* w! V6 }4 K7 w# i7 d
  19.                     list1.Add(s);% S0 i" a) Q, W0 S7 n' N& M2 ]
  20.                 }) _0 S* O9 `  K( i0 A$ I2 {
  21.             }* Z9 B$ q1 I. Z% a+ @% B
  22.             hash.Clear();5 l% o& Q8 F8 M! @
  23.             hash = null;2 A6 C6 x: I6 L9 u2 y- g( }
  24.             return list1;8 D" [  f5 N$ n0 O
  25.         }
    ' i$ n2 s+ t" x* l. _: k' _
  26.         #endregion
复制代码
' x6 t: _  b  c" l

  M: S' L3 U& h6 Y

点评

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

使用道具 举报

36

主题

215

广告币

298

积分

初级会员

积分
298
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
2 c# H+ @+ b# Z6 Z7 s: P  T# t6 S7 V
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1486

广告币

1828

积分

高级会员

积分
1828

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:203 T  U3 L  V2 N6 T8 }3 S( [) R9 M! _
十分感谢!!!非常感谢!!
& C1 E" S) y" n7 y4 u+ {) G- x9 o
缺少一个gethtml,用下面这个:
/ D. t! p" B( M9 ?% {
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    - l1 b2 ?# d7 B7 v. k. o5 H
  2.         {& M( }5 ]' Q' F; ]
  3.             string strWebData = "error";
    / u" a1 z4 S* O( A/ v
  4.             try  v& L, ]# b& K5 l& L1 \0 Q4 _
  5.             {7 y: s9 t8 d- H0 Q7 m
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 5 m& i0 |* g% g- s
  7.                 // 需要注意的: 9 J7 W& w" u' o( E) p
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 & v5 \! u1 U# `! c$ _. O3 c0 D
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ( y6 U! _3 I8 X( p) l5 Z, D( R
  10.                 // webclient.Headers.Add("Cookie", cookie); ' |/ d$ U2 c5 a+ m- _# O
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    7 [6 |/ B% D! W7 E
  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 k) `" @7 A2 u+ q
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");# [0 D& z1 y5 c& R1 `+ v
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 0 y" \, Z  e; `3 `% W$ s  h; }
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    - V6 e  }, c' h
  16.                 //如果服务器要验证用户名,密码
    / U4 I) U4 N. H& v
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); : D9 N! r$ W2 v, F9 C
  18.                 //myWebClient.Credentials = mycred; 5 W- k2 g/ _/ b# r1 t7 t
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) , r2 y9 v: E2 h% [7 k1 t1 }. m& M
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    : w/ u* W9 |9 P$ D/ }  `. G
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);; Y$ j  Z6 M& d
  22. ( j: t: I. s* c! A; N5 S
  23.                 //获取网页字符编码描述信息
    8 Y3 h/ L1 X  b0 p) b
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);8 }- Z% g9 s# v0 _/ C! h- ]+ B7 K. |
  25.                 string webCharSet = charSetMatch.Groups[2].Value;* q2 i1 w& |( K3 {) [, E5 f4 h
  26.                 if (charSet == null || charSet == "")
    " w, x: d) `8 T! i6 |+ g, e$ l
  27.                     charSet = webCharSet;
    % R0 k; C5 `- K' j4 S: \, `
  28.                 if (charSet.Length > 0)
    , v5 ^2 x' o6 C, x) |7 ~9 E
  29.                 {
    * e/ i/ v: u9 e
  30.                     charSet = charSet.Replace(""", "");' V! u+ k! T; j0 G& d& n' F. H
  31.                 }
    . E0 N8 Z, z  x8 ^1 @4 m  `9 W
  32.                 if (UseUTF8CharSet)
    " u  f! J. r$ q1 p- W* V
  33.                 {. B$ o8 p6 g7 H8 d5 d4 f
  34.                     if (charSet == null || charSet.Length == 0)8 b7 Z: m; l- G' u
  35.                     {3 @. P, v) k3 ]! N
  36.                         charSet = "utf-8";
    ' @! B, `  s# v& v5 Y# N$ k
  37.                     }
    + {  d3 b- e7 Z/ g- o) \
  38.                 }
    6 r8 `' U* I- a2 a7 }# r
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)5 }- O) U0 M) ]6 R
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ) V  m0 i' T3 n9 f: p6 `2 ]2 v
  41. + }; d) U. X, j# K* N9 U  q- [
  42.             }
    ; s9 c9 K" d% P
  43.             catch (Exception)" l6 k, g7 b* q$ R8 N* Q" C
  44.             {
    % }3 ~1 B8 N' o6 w0 f3 L
  45.                 strWebData = "error";* i1 e1 R! C2 H
  46.             }# e, @% e% I+ r4 {6 G6 Q8 b

  47.   u. ~6 s  _4 Z2 l* V- }0 m+ e
  48.             return strWebData;
    6 T2 o, v+ `2 P# @
  49.         }
复制代码

+ T. |% \2 O! F  n- i+ @! H- k+ I$ ?5 ^. b: @$ K" V6 `2 S4 z
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-6 05:23 , Processed in 0.156743 second(s), 25 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

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