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/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%
DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9929|回复: 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 抓取全站链接
    ; V8 D- ]! j3 w) D) W
  2.         public static List<string> GetAllHref(string url)3 D" A! V4 x  [8 J0 K3 z, c% C
  3.         {6 P. Y% L% f7 K% F
  4.             List<string> allHref = new List<string>();
    ! v- d& c* d# _- H% j0 F7 Y
  5.             try; w6 P9 e8 x" R" U
  6.             {) l" u) u3 j- v
  7.                 string strhtml = soso.getHtml(url, "", true);, e( U6 M/ I$ k
  8.                 if (strhtml != "error"): G# R7 ]) s* t3 o" N
  9.                 {' [$ e& O0 r& |: k+ e, }
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");% R, n- \4 [( k2 h
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ' g) o# I. W' V; e- b
  12.                     foreach (Match m in mc)
    ( H  o) P9 W! |0 i; G8 \
  13.                     {
    + l9 @) Z  O  q2 ]1 D7 i
  14.                         Uri uri = new Uri(url);
    " x* G( \6 V" R% Z5 u8 y
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);3 V+ h/ Z& V) b" N
  16.                         string fullUrl = "";
    8 W7 m& t, _- j* Q
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    + l+ Z4 s/ U% B2 h! V
  18.                         {4 V" V/ n* q( r
  19.                             fullUrl = m.Groups["url"].Value;' t0 A; t) N- g) x4 t1 S
  20.                         }: H0 q2 f# X0 y% k0 _9 b4 g, m
  21.                         else2 w6 F& |1 H7 D9 G* u
  22.                         {6 E+ U- L/ r) F7 g' m5 x6 c( p
  23.                             fullUrl = thisUri.ToString();
    ' f: S" V" j; a6 j' e- t3 F4 |5 G
  24.                         }4 X1 E6 O0 ]/ n$ f
  25.                         allHref.Add(fullUrl);
    2 r2 i* g$ u1 M9 E- J
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    . k+ |- E1 _7 s6 q3 [
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);4 ?5 W% ^+ R! W8 m
  28.                         //Console.WriteLine("补全链接:" + fullUrl);! G1 H- L, o# _  w
  29.                         //Console.WriteLine("…………………………………………");
    2 j) d' S  Q/ ~& |$ x4 {
  30.                     }; ~8 m, r- Q; S/ A2 }: Q
  31.                 }
    * t5 a, I. E1 W3 y7 R9 y
  32.             }
    # n, d# d1 b) c/ F
  33.             catch (Exception ex)
    5 L$ O, d" _8 v* X2 M
  34.             { }0 E: `4 w( D( ?3 X& L
  35.             return allHref;
    $ M& O- Y  @4 |4 B6 C1 ]) v
  36.         }& m) D! W& _: k- X
  37.         #endregion
复制代码
+ ^+ b$ k% X; y9 X- u  u( A# d
. Y' Q# s3 k/ C9 ~7 ~
  1. ) x2 \$ ~" D$ |# f) D1 a

  2. + b, y1 P" I0 g

  3. 8 V$ S; E( ~8 a
  4. #region 数据去重, v9 _% \8 z% a) w( j% z
  5.         /// <summary>3 ]; y, K( u% l; y+ \% s
  6.         /// List<string>去重
    " H7 H# m" _& j5 H1 E5 Z) ?# u
  7.         /// </summary>
    * p3 R8 ]& H2 Y2 L. I7 |& f
  8.         /// <param name="list"></param>
    2 G! F( J- \# P, A# S& ]1 A2 u/ x) G
  9.         /// <returns></returns>6 T! k) i& m8 l0 G* h5 J
  10.         public static List<string> getUnqueList(List<string> list)
    ) f! [' B: ]9 w' N3 f1 L
  11.         {
    # G6 i: Z( g% ?0 k# ~8 x
  12.             List<string> list1 = new List<string>();
    1 Q8 R8 _) g2 C; M" L
  13.             Hashtable hash = new Hashtable();
    ; h0 [6 P) v; _1 p' |5 |
  14.             foreach (string s in list)
    , _1 l7 |3 {1 J7 v
  15.             {
    # \, U8 R8 p$ n& y& |
  16.                 if (!hash.ContainsKey(s))# m0 f; [8 `" B" G/ ?
  17.                 {
    1 r) R* X$ ^0 x& W. N. j8 i! o6 R$ O
  18.                     hash.Add(s, s);
    & e% ~+ M( _# Z, ?. D; U) @
  19.                     list1.Add(s);" h0 w4 Y3 @- R: D% p1 Q6 q
  20.                 }2 m. y6 I( R  }$ V! V
  21.             }: o: L' m' h' L- S8 q
  22.             hash.Clear();
    ; |8 B% r1 P9 U' n4 P
  23.             hash = null;! k: g/ ^+ k/ v& F7 [
  24.             return list1;5 \: n4 u$ o2 O6 X  f
  25.         }' f8 e2 K+ F* d" F7 j* u6 s. T5 F7 W
  26.         #endregion
复制代码

% w# m0 O" j& D6 z2 @; T
8 J( |: V+ D' l+ @2 m/ m

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

8 P! a0 A' A- W0 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:204 A5 X2 r& p- s, o7 s0 @) C" F
十分感谢!!!非常感谢!!

1 S% J' N. K6 }缺少一个gethtml,用下面这个:3 G/ }  A, F9 C" a
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    + d$ y* y" T* T9 i: H
  2.         {5 L( Q5 Z1 }/ K9 J( q
  3.             string strWebData = "error";
    / }2 _1 g0 R" Z: ?4 {! j
  4.             try) B. a! Z9 z' @
  5.             {
    ; {7 L! }3 I( K; w$ K9 F# m
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ! N! ~! M5 |# ~4 c- R
  7.                 // 需要注意的:
    ! {) d# ~0 p; `( C2 @
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 - b3 n7 S! x5 U1 h2 h
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    % x/ Q' f2 y* h
  10.                 // webclient.Headers.Add("Cookie", cookie);
    6 ^& ^' d) F  ?/ l! K/ y
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    : L' h# c3 m4 @- P$ y
  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)");
    . `$ ?1 S7 Z3 L5 b3 r, ~# C
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");' R5 j1 y& _# W
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    8 ]$ X) r3 m) k
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    / H) S' U  V( q+ P# Y
  16.                 //如果服务器要验证用户名,密码
    + L! i2 X+ c/ W+ d; {+ b- z
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    . b  {# G- m8 F$ C) A. B
  18.                 //myWebClient.Credentials = mycred; 6 D" A; X$ P5 w3 s5 ^1 q
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 7 t; k3 g9 I% ?+ z. b
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);' f# I3 g2 j3 V# r9 l7 M3 ~+ g
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);) W: y% m0 P5 ^8 ?7 |, t$ u

  22. 7 P( A% K' K1 ~. x& X
  23.                 //获取网页字符编码描述信息 + q- H3 U5 a+ j
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    * G! G3 m: t& p/ q
  25.                 string webCharSet = charSetMatch.Groups[2].Value;/ _2 F& }8 z$ Z2 u
  26.                 if (charSet == null || charSet == "")3 k1 o! s, B# z4 R( e' n/ I( [
  27.                     charSet = webCharSet;
    # ~) K" }% v- m2 q, X3 ~
  28.                 if (charSet.Length > 0)
    * M0 F, N. Y0 B6 m( [3 W
  29.                 {
    # T4 p$ X( o" D
  30.                     charSet = charSet.Replace(""", "");
    6 ]" F# W; t: e1 a
  31.                 }
    $ r% o9 R5 h3 T, ^
  32.                 if (UseUTF8CharSet)
    5 ~/ m" j1 M, X' v1 e
  33.                 {" I; {( t2 T2 v- e& H
  34.                     if (charSet == null || charSet.Length == 0)
    / Z' N# b' G/ F+ v* L
  35.                     {5 d  K* q4 ?* r
  36.                         charSet = "utf-8";
    8 L& B& F1 D0 J& N: {
  37.                     }
    9 W- O( H- k$ V' k1 j7 @
  38.                 }/ Z$ \: ?' S  R
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    : |; G. E/ o$ p: H& W# i
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    2 S" c: r  u% e4 z0 {
  41. , n5 O* v9 X% }4 s" s( s' c
  42.             }! [. _3 P" Z/ P2 z6 ~  Y9 W2 y
  43.             catch (Exception)1 M: B4 l% Z- m( l% s) H4 B
  44.             {
    7 G- A+ w; K: U4 X6 l% i0 r' Z
  45.                 strWebData = "error";
    - S& f) Y  @6 c" M2 b) y  R& x, Z
  46.             }
      c9 R3 t  m) {+ k% V! C

  47. 3 c, U6 @7 c7 Q( ?+ m) ~" ~% k) [
  48.             return strWebData;
    4 f* O, m0 [, s3 h
  49.         }
复制代码

# |/ D9 b7 [0 X6 D' J9 X. `
% H% n) s" V! D# l; p0 t, b  ]9 F! p* |
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 20:13 , Processed in 0.052253 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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