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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9749|回复: 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 抓取全站链接
    4 v- K7 H5 r5 `
  2.         public static List<string> GetAllHref(string url)- [6 A1 q1 B& x% G4 L6 ?6 B
  3.         {
    5 M7 c- s; ~, W$ N" w' ^
  4.             List<string> allHref = new List<string>();& z* \% |- j/ _! [& B
  5.             try, v) B- ~* w' \: ?
  6.             {& q) r8 X- D+ L" F
  7.                 string strhtml = soso.getHtml(url, "", true);0 \5 `0 o- x' z5 R, b4 x
  8.                 if (strhtml != "error")
    - ]" r9 H( e$ [* e- G
  9.                 {
    / `( R: i" o4 H7 w( d" P
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");: H4 X7 }( P5 M/ N
  11.                     MatchCollection mc = reg.Matches(strhtml);
    0 P* i: R' z7 i, P7 K  Y
  12.                     foreach (Match m in mc)
    7 |4 s. d, n& y# L. H* `: X* ~0 R1 z
  13.                     {; w7 A6 }( F  T% z" i3 F, G
  14.                         Uri uri = new Uri(url);
    + w( ~! I, i# t$ L7 s7 Z% _
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    0 T  b8 W4 A( `+ l. [
  16.                         string fullUrl = "";! A: t4 x) `% b; A9 b( O0 _
  17.                         if (m.Groups["url"].Value.StartsWith("http"))7 D" L" y2 X$ X$ f) G$ F
  18.                         {: u, U$ @1 H3 i! \5 {& z" H
  19.                             fullUrl = m.Groups["url"].Value;* L' R5 @' [1 I, a/ J
  20.                         }7 F6 K+ K/ T; T
  21.                         else
    $ S) S' W% t3 z7 S* T
  22.                         {
    9 B. o& D9 h+ @$ Y" `: o0 d. z* a
  23.                             fullUrl = thisUri.ToString();4 R, U7 q: X, X8 }/ W
  24.                         }
    ; B, @$ Y8 s& t: g. o8 v
  25.                         allHref.Add(fullUrl);
    " f% E& q/ T) p. R& W1 p8 U
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);) U! I. Z7 S& o
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);6 g4 ^  O6 L" I4 ^
  28.                         //Console.WriteLine("补全链接:" + fullUrl);- T' Q3 u' g( p2 R
  29.                         //Console.WriteLine("…………………………………………");" v- ?" K$ T8 r8 y5 l' C7 v
  30.                     }
    % D8 [" G/ b0 m, ]  e& w8 t
  31.                 }' r# u8 l* N, k  I' v& f1 j7 f- T
  32.             }
    ) ]5 \3 o. v: G" ]9 E1 d5 A9 `
  33.             catch (Exception ex)& }8 F9 T# \* \. Y/ {/ U& Z
  34.             { }
    . m: o( f. x6 |, C  T6 `" a9 E' ~
  35.             return allHref;
    1 p  b+ z3 m; C' _! |9 l$ o- Z
  36.         }
    " ]( S- R2 v0 n9 }4 f9 v% [
  37.         #endregion
复制代码

' H7 Z( C& P3 c; `* ]5 B' Y
) E% f4 g; s* x
  1. 9 F' N- n9 ^5 m. D4 y+ Q

  2. ( ~. t% L. M: M/ N9 l
  3. ! u$ K' |+ a# \. V( q+ J; p5 c
  4. #region 数据去重
    9 R9 A% h6 h3 j, V3 g% l8 P: j
  5.         /// <summary>
    3 Y/ y9 D9 e6 }* C4 V
  6.         /// List<string>去重
    % r3 M' {& `' s8 ~9 i
  7.         /// </summary>4 s+ B; W& B7 W
  8.         /// <param name="list"></param># k4 A3 C5 [6 s$ T
  9.         /// <returns></returns>% i9 M: p8 w4 F' B' ^/ M
  10.         public static List<string> getUnqueList(List<string> list)
    1 Q, k9 o1 p  l+ y$ ?8 q
  11.         {
    : X* ?! q. X4 l; f
  12.             List<string> list1 = new List<string>();; T, i, \/ k0 Y6 e2 f6 J
  13.             Hashtable hash = new Hashtable();2 E) P, O; `7 [. D3 s
  14.             foreach (string s in list)9 p7 o0 ^4 _/ M7 r
  15.             {
    9 b/ R) Q# ?2 L  K- L, b! |7 u
  16.                 if (!hash.ContainsKey(s)). X3 R* F9 C. }
  17.                 {+ a4 o# z2 T5 H% W4 ~
  18.                     hash.Add(s, s);
    " B$ c. X) J. M; `0 x
  19.                     list1.Add(s);1 j% R' y+ }% J; h( s
  20.                 }7 r$ }& E  y; I7 Y1 I" g5 S
  21.             }' y7 g4 L5 e& U- `! S
  22.             hash.Clear();# f1 p# y: }/ Z' U5 K
  23.             hash = null;
      G/ W- f' a# i+ L; C+ n
  24.             return list1;
    ( B( I8 D$ {/ e
  25.         }
      K. t2 m  J1 _% j0 `0 {7 ^( [
  26.         #endregion
复制代码
, k  ]/ n8 o6 I# n
1 N( l) x+ D. S% e( P' R

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
  Z  `: c1 b3 G  O8 M
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:207 Z0 e* Z$ p3 K1 P
十分感谢!!!非常感谢!!
  H3 L( t8 Y' b; s
缺少一个gethtml,用下面这个:/ b) u& a/ n$ S. R4 D( ]- J
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    7 h0 \3 t( a7 F5 g9 }
  2.         {+ |6 L# F/ c# O8 r  d9 }0 ^- H7 X
  3.             string strWebData = "error";
    % W+ H9 ~$ B! w% _7 _) e
  4.             try& b3 A; M, M# ~6 \) @
  5.             {  ?" i0 n' }' n5 v( @
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    - e* F2 K% t  }& d3 L! {- O$ [& h% w
  7.                 // 需要注意的:
    + m' n* E4 H0 i; B
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 $ `6 R) [4 U# k% `* w3 D! ^/ ?
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    : z! U) c, j0 J4 }9 O3 |
  10.                 // webclient.Headers.Add("Cookie", cookie); 5 Z% `' n; S8 I  s- U
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    . B6 k; ^; G$ a# |
  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 n  t5 v8 Z% A' u. d
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");2 R% k' y& ^4 S% Y/ _% I+ q( O
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 - J( i5 q1 V8 u: U
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;9 B& Q/ U# \2 I5 Y9 x5 q
  16.                 //如果服务器要验证用户名,密码 8 k( w& n( v6 v' ~- O; U$ w, F
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 2 z1 v5 j* f# |7 y. ~3 m: K
  18.                 //myWebClient.Credentials = mycred;
    0 e8 `6 v  L: {* {+ V/ L
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    , A& ]* c* A4 u6 d; M& `3 `( \
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    0 w% i& b, e. p2 M! Z8 T
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    8 A( }  v8 l+ X5 D, g: P

  22. 4 @5 X  ^$ m1 f+ `4 t7 H0 s
  23.                 //获取网页字符编码描述信息
    1 G3 ^0 y) `' R/ H
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);; A* V  K( ?8 m4 }. C1 u
  25.                 string webCharSet = charSetMatch.Groups[2].Value;, X8 H& Q5 ~" I9 U
  26.                 if (charSet == null || charSet == ""); ?0 W! f- G  Z0 _
  27.                     charSet = webCharSet;
    6 }" }6 B- l5 y2 g3 f5 ?4 P
  28.                 if (charSet.Length > 0)
    - K& x1 Z* K3 h1 S- u
  29.                 {
    , F" W& E! x( r* `2 d9 Q
  30.                     charSet = charSet.Replace(""", "");
    ' M' X2 a; o- z
  31.                 }# Z$ I' p4 L: G2 j8 K
  32.                 if (UseUTF8CharSet)
    ! r& ]7 [0 t  k2 T6 ^
  33.                 {
    2 ]5 r, B3 K. s* s- S
  34.                     if (charSet == null || charSet.Length == 0)
    8 |6 J$ }* z7 Z1 k1 o
  35.                     {: F5 ~! r1 O& U
  36.                         charSet = "utf-8";4 s! E% P. U# K  f4 J  v8 m& ]
  37.                     }
    & {+ R  j7 q6 c0 e; M
  38.                 }
    . d  k: s1 {! e% I
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 M# f  s/ Y- d
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    . q& I8 ~8 U0 ?

  41. * |4 L: m3 u+ k- ~
  42.             }' Y* C9 _' V! F
  43.             catch (Exception)
    0 j% l) u: N6 v4 L
  44.             {* b/ O- m/ Y9 ~! N6 L4 C( K8 `! Q
  45.                 strWebData = "error";
    , v1 d+ G7 v1 x* A: a( h+ a" {
  46.             }
    4 \( h; D1 k0 \; w% Q. M

  47. . e, u! Q( N! ^* F1 U! O+ J
  48.             return strWebData;
    2 N' n/ m9 z5 U
  49.         }
复制代码

, @3 U7 i, L2 C* }7 H; b* ~! D) v* V( h  S3 Z- o7 x
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-14 22:43 , Processed in 0.052799 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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