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户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9955|回复: 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 抓取全站链接" t& A8 k4 A$ r! l6 \
  2.         public static List<string> GetAllHref(string url)
    3 ^1 H* x, J& h" T4 H/ T+ X
  3.         {
    9 R) U' \' U& R
  4.             List<string> allHref = new List<string>();! _6 v, B) Z( ^$ D  N3 d4 J6 e: r
  5.             try$ g! K6 ~" G/ |4 j. s; }
  6.             {# c/ f2 L8 ^- }) U9 r9 I
  7.                 string strhtml = soso.getHtml(url, "", true);
    0 Y. [. i6 W1 f0 H
  8.                 if (strhtml != "error")4 K  _" l. I, w/ f
  9.                 {, W6 o/ R2 E0 X. S: ?
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");( F4 j7 F( L9 G, n- l
  11.                     MatchCollection mc = reg.Matches(strhtml);
    & H3 I% r  U% R& N( }: n) J
  12.                     foreach (Match m in mc)& X# z  M: `" K7 o( a; [" c
  13.                     {
    # p4 U% ?" m5 t3 E$ l
  14.                         Uri uri = new Uri(url);, g* E: g' C) U: O1 N9 C
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);- ~6 p- ~" l. P* G! U* G
  16.                         string fullUrl = "";: a5 p1 r; N! G$ B& I7 f+ V! E
  17.                         if (m.Groups["url"].Value.StartsWith("http"))' p5 M# c" ^0 z: t3 H" P* }
  18.                         {- J1 O1 K' n9 p. M% q
  19.                             fullUrl = m.Groups["url"].Value;/ y4 I) u  L4 X; E1 r! d. a4 ?" _
  20.                         }
    5 L: R* G% k) W* x+ G6 d
  21.                         else
    ) D/ I  I7 [. D' V  [* q
  22.                         {% }% G  Y; F0 _* P' ^+ `$ X! x* e1 T
  23.                             fullUrl = thisUri.ToString();6 @( I9 ^+ h% `& O/ }# m4 h2 h
  24.                         }
    1 I) G3 x  ?' D
  25.                         allHref.Add(fullUrl);
    9 o9 d- {4 A' B- d! I, }
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    2 J. T" S0 X% e8 b; Z6 a+ z( v, ]1 t
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    * u, S4 \6 m  l; h+ Z% o$ W
  28.                         //Console.WriteLine("补全链接:" + fullUrl);3 D& [/ A! R( ?+ N
  29.                         //Console.WriteLine("…………………………………………");# t# o: b3 f3 T% _
  30.                     }; [# x& t( _1 {  \& v% `7 s
  31.                 }( q7 H  j5 Q* s8 Z
  32.             }3 `$ j, \+ F. {, S5 ~
  33.             catch (Exception ex)" J3 _$ P7 ^- P4 g! {" E% U8 K
  34.             { }3 V8 W* l5 S) P: I$ h1 `; Z* m
  35.             return allHref;& f* u& e: e6 _/ g# q, @
  36.         }4 F- |7 ?( z! t8 O2 a, X& U0 T$ O1 R
  37.         #endregion
复制代码
6 R  o1 k: @! t9 N3 D

. ^0 D  q! L! e) T+ t
  1. * Y9 `: H, f- G; F9 P- a& }  m
  2. 9 Y) N( f3 Z' A! A
  3. 9 ?% s( W: h' h. [" E3 b
  4. #region 数据去重' u  B: V3 r/ K5 H' d: `1 f7 j0 T
  5.         /// <summary>5 C% n& a. W0 L
  6.         /// List<string>去重1 m( c3 {( ?  h3 Z
  7.         /// </summary>; ^( {0 d0 E( y2 N
  8.         /// <param name="list"></param>0 A: Y- [7 t" T( c! A" k
  9.         /// <returns></returns>! ]" b0 K  }% x/ v. y
  10.         public static List<string> getUnqueList(List<string> list)
    & B% P6 P# r& R6 R0 h) F
  11.         {
    4 D4 Y7 V0 Y% R1 l
  12.             List<string> list1 = new List<string>();% {2 w$ w- G5 z5 S; T
  13.             Hashtable hash = new Hashtable();3 l9 p8 p8 M- f! H' C; T
  14.             foreach (string s in list)
    9 H- R6 N6 w% V/ o
  15.             {
    ) u: X! @$ A6 W; S5 ~! I6 }
  16.                 if (!hash.ContainsKey(s))0 R# X' m9 L" \$ N& X
  17.                 {
    1 G+ j. V  i8 l6 ~' ~/ M7 k+ A4 U
  18.                     hash.Add(s, s);% y% T% A+ L- o% P! A
  19.                     list1.Add(s);5 T: E5 Q8 V/ X! l, ?- _
  20.                 }
    9 g5 v, c! ~0 l( m* ^' M" y
  21.             }' ]& V/ b- H0 n1 v/ ~" s, h* Z
  22.             hash.Clear();8 r3 V; q$ v8 P0 m
  23.             hash = null;
    2 E( Z/ |' O4 o0 g6 y: @9 P
  24.             return list1;; n! n6 j5 ?# O- g) a/ w
  25.         }
    9 U! i" m% w" j' S7 P9 {* ]8 W
  26.         #endregion
复制代码

; u8 u+ h- b# j; Q2 U# Q& v9 T9 |
! F1 A  k2 ~1 d; S  I/ g  ~

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
* |, x9 ^0 M3 k! c
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:200 ]/ x, ]  @8 Q# Q/ b
十分感谢!!!非常感谢!!

) [4 P, r4 T0 i4 @4 |9 b缺少一个gethtml,用下面这个:
  a: c/ h* c( h! ^
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    & J4 @. R% W: Z/ y4 c
  2.         {
      @( w# ]" L, d
  3.             string strWebData = "error";8 e0 V  t1 \8 F
  4.             try
    2 ~  T2 v3 e5 {0 R* ]$ [
  5.             {; f% M  z' n1 J, B4 L( ^0 |
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ; @# f& d( C" }$ k3 L5 z/ J  X: s1 i) F! z
  7.                 // 需要注意的:
    : j$ P, D1 O* v- G+ R4 h9 c
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 & y0 I$ D# o  j4 S1 r8 O
  9.                 //这是就要具体问题具体分析比如在头部加入cookie + l+ [8 @, l: e: _% }! d$ r
  10.                 // webclient.Headers.Add("Cookie", cookie);
    9 s: w7 a; `' `2 E/ M; T
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ( F7 j) [+ y5 z9 q2 R
  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 g* w% v* P; w& _  [; }
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    + u9 G3 \" r6 g: ~" q
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ! s% @* g+ C$ u0 u$ r& g2 M( G( `4 _9 V
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;) w3 j- Y6 r' G* c: M
  16.                 //如果服务器要验证用户名,密码 4 g7 A1 P* t& Y* u# B4 H! M- m
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); : v% U/ }7 x0 {+ u, ]* x! i
  18.                 //myWebClient.Credentials = mycred;
    ) |  Y; r  Q8 u7 r% K
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ' v8 d; v) L2 U* P! }
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    * P3 Z! D! I6 i& C4 j" D5 M/ M
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    4 v9 e) S5 |! }8 I1 f& u
  22. 9 f* t$ @6 S. j) F/ x
  23.                 //获取网页字符编码描述信息
      `- t- f* E3 @# q
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);2 U1 q4 w6 K& Z0 m! V
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ) |8 ]1 @9 K. V6 d' C
  26.                 if (charSet == null || charSet == "")
    4 p0 s8 V7 m, o! c) S+ \, l
  27.                     charSet = webCharSet;. y* I, [9 m/ h2 M- A' l" g4 h& X" C
  28.                 if (charSet.Length > 0)
    0 w) ^7 K5 W& F7 {
  29.                 {
    9 `4 `5 T, @* I" s
  30.                     charSet = charSet.Replace(""", "");
    8 v( p9 ?, b/ H8 ^- S6 I6 u
  31.                 }
    # Q* V7 }1 k2 `5 o& Y. u: F7 p
  32.                 if (UseUTF8CharSet)
    : f' W3 O- `+ d
  33.                 {! p/ z5 U9 t6 @; }  Y$ n
  34.                     if (charSet == null || charSet.Length == 0)
    5 n) z! |4 z! S# K9 s& I
  35.                     {8 V8 \6 y0 t. e3 n! ]
  36.                         charSet = "utf-8";
    : \6 g( s2 n4 m% t
  37.                     }+ o8 n" Z. U( l( j* K; W) y+ d
  38.                 }" w. ~3 g7 s% C9 V. E. _' ^
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)0 o. d5 d1 M- U: D! l
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    + ~7 Q3 M9 ?/ q

  41. 9 [- {2 m0 n% c' A4 v1 {  y7 o
  42.             }
    . e) g5 A8 }' q9 E; X0 r5 ?+ B
  43.             catch (Exception)" M9 ~/ @5 S3 E3 s$ e
  44.             {
    3 w5 w: J7 ^- y  E! N) N8 v- f7 a- ~0 q
  45.                 strWebData = "error";$ I4 O- ?+ T3 U- }" p2 n
  46.             }
    + i% c1 x4 V$ E/ n! y

  47. ' a/ z' |, Y% x5 u; J  d: M4 N, t. ^
  48.             return strWebData;
    ( P/ `( `# O0 L9 C
  49.         }
复制代码
2 @& W4 @* O% y: D/ R) M' M

) T4 o9 a  D  [+ ~, e
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-13 21:42 , Processed in 0.139278 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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