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%,国内持牌机构  
查看: 9761|回复: 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 抓取全站链接
    " X4 a" f7 y# l$ b
  2.         public static List<string> GetAllHref(string url)
    , x& V1 J3 r" t: x
  3.         {
    6 k- p7 t- V- C( x* s" @
  4.             List<string> allHref = new List<string>();* M! h9 \& `& P+ F
  5.             try7 R: I! `6 }  f* S3 |
  6.             {* T4 q1 l0 d# ?' O
  7.                 string strhtml = soso.getHtml(url, "", true);
    2 r- ?- D% k& T4 W! ]/ N
  8.                 if (strhtml != "error")
    # e6 B0 p8 I) G% g0 e) @1 d
  9.                 {
    , g% ?5 a  I% |7 Q$ ?
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");' H$ Q" W) C  v; B, h
  11.                     MatchCollection mc = reg.Matches(strhtml);
    2 s; P% N% H. d8 j; C
  12.                     foreach (Match m in mc)* d- X; j' Y8 }
  13.                     {
    ) e' z5 o; n. H& i8 M$ G
  14.                         Uri uri = new Uri(url);
    ' M! l+ M6 \& L5 C" [. \$ B) d
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);/ T  o7 Q4 |- n, k
  16.                         string fullUrl = "";$ ~5 G7 ~% M0 g/ t0 a/ Z  T
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    9 k) D& m9 s  C7 E
  18.                         {3 u  p/ p, _: `3 F) q4 @( y6 q
  19.                             fullUrl = m.Groups["url"].Value;3 p0 t& v0 T& v8 C% H. h" f, @
  20.                         }; O& H- I) b2 s* }5 I: m
  21.                         else! n1 t+ @1 l1 j) t9 N$ J# U8 t: h
  22.                         {
    & c. k; I6 c: M% \; [
  23.                             fullUrl = thisUri.ToString();
    ) i; {9 U  j$ t0 L* T, g
  24.                         }
    7 _5 h' K) }1 w& r$ t  L6 q9 Q
  25.                         allHref.Add(fullUrl);
    2 `' f5 p3 ]0 i1 i; [# a
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    % q( I8 u+ K. h0 X4 h
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ' X: V( ?& I# f) g' G6 b- @( o
  28.                         //Console.WriteLine("补全链接:" + fullUrl);8 ~( h$ o2 b/ s, M2 K/ ^) ^5 d
  29.                         //Console.WriteLine("…………………………………………");
    1 B% _2 g: O# n/ Y0 D+ w1 I
  30.                     }7 w8 p0 t. b4 L* ^
  31.                 }
    / ~' ~( {! `# m
  32.             }
      Y$ x1 s; e' I. e) [/ c% N) A
  33.             catch (Exception ex)7 b, e0 U( x# L% T0 K% e8 M5 w6 Q
  34.             { }( Z# ]$ S3 k( u2 n! w8 H% d2 U
  35.             return allHref;0 O6 O) L, t) r% `" O
  36.         }. F) n  p* \6 x- j; u$ t4 k
  37.         #endregion
复制代码
8 a7 r  t+ V6 k: z5 z% c+ Q
1 k8 q* ^* K7 r- ]+ Q% _& ?
  1. ! w- D( U6 i* v8 n7 L+ S7 v* U

  2. 4 v( x7 x* I( B9 k% Z

  3. % O2 ^7 `* f! H9 \4 i+ f& P2 l
  4. #region 数据去重+ y' G/ X# z5 K" `9 e
  5.         /// <summary>& O8 K+ n8 W+ u. H% A
  6.         /// List<string>去重
    , D" m. x+ t& K; j5 Y5 O0 q! J# O- N
  7.         /// </summary>
    ; h8 N+ M4 n: P2 i2 L
  8.         /// <param name="list"></param>1 B0 f/ H. J+ `( F0 D1 s( R6 e# Y
  9.         /// <returns></returns>
    : A0 y- {; j, z
  10.         public static List<string> getUnqueList(List<string> list)/ i  X4 h  ]- j/ d: {! j* W4 U
  11.         {
    # C1 Z* i0 U- i- q, O
  12.             List<string> list1 = new List<string>();# u' m1 e7 G$ B6 P
  13.             Hashtable hash = new Hashtable();
    7 R9 m, D( G' J% m5 @9 |$ R( ^  C/ E
  14.             foreach (string s in list)
    7 \4 v( d  R) r. ]# J4 y8 E9 z
  15.             {" _" V( d* ?# N
  16.                 if (!hash.ContainsKey(s))1 e6 f5 o- \2 ]1 }. U5 b
  17.                 {
    / w) h2 {0 w5 i% f$ C) S
  18.                     hash.Add(s, s);7 F: X4 `8 }; w5 _, G4 C$ t
  19.                     list1.Add(s);5 Z& f$ W  N8 k/ I# w% B% h. b
  20.                 }0 p  b; t$ y; Z0 j% X( `
  21.             }
    ( o8 B6 Y6 J7 t
  22.             hash.Clear();
    3 s) |( {, w$ h& k. q
  23.             hash = null;0 O2 F6 l& j0 T2 V
  24.             return list1;
    ( L- u0 n! U: J+ p5 R9 t9 ?
  25.         }
      h4 G, x$ {8 P3 T4 n7 f) J
  26.         #endregion
复制代码
/ K, b0 p7 H( z, l8 J. T  w# d) C  ^
6 \% F0 V( D9 k  i) ?

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
1 k, J. Z' q( ^( u: O" f7 L3 Z7 W
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
' N6 }$ p; U' E十分感谢!!!非常感谢!!

* a& V$ E4 ?" w# Z- H7 V缺少一个gethtml,用下面这个:
5 Y6 X7 l$ q0 [/ S' y
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
      E" x0 t, `% ^& P) I* b
  2.         {
    9 ^! k+ p3 \. e- P$ N8 I+ }: [
  3.             string strWebData = "error";
    2 o2 n  g# L8 G
  4.             try; f+ F, W5 `+ d1 |; o
  5.             {
    5 O% i4 Q' q6 n! X4 K
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    / B  n% ^/ W' Z+ c1 H5 V3 n5 o
  7.                 // 需要注意的:
    ; b+ R7 ]  w, ^. P0 O+ @" l; n
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    ; j5 }1 U2 O/ n* O
  9.                 //这是就要具体问题具体分析比如在头部加入cookie " n; u8 j6 v& t1 Z" L* b
  10.                 // webclient.Headers.Add("Cookie", cookie); * _/ e# V# {* Y* \
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    $ Q5 M2 ]! c7 u5 a8 q3 J) e5 C
  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)");
    9 v! A7 }2 M* H  L* g
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");! l- R+ e8 L2 v; ?
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    9 k; d: F0 S% w/ l: b: u
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    $ f' ~! R7 \3 f4 S
  16.                 //如果服务器要验证用户名,密码
    6 z# `+ Q" Q/ c1 e, |
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    - Q- W2 N# n% j5 K
  18.                 //myWebClient.Credentials = mycred;
    , {% M$ a$ n* v/ k  a6 G* r( P
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) # M. D- m% q0 I0 z2 b& o" s
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);. ^0 i1 u) F% R0 p- @# E1 b
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);8 X7 a; T3 ?! \3 ]( o

  22. ' m; L! v7 K$ S) U
  23.                 //获取网页字符编码描述信息
    ) _7 s( u, }. I
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    " T# J1 Y4 J8 L# T# W( g: W% h
  25.                 string webCharSet = charSetMatch.Groups[2].Value;9 a- o4 F5 n9 O$ n0 z; H6 H" a% B
  26.                 if (charSet == null || charSet == "")
    3 L& \$ r9 S8 D
  27.                     charSet = webCharSet;! D$ a( M: x# U. V0 j" A
  28.                 if (charSet.Length > 0)) j# ~3 S4 R5 Q2 ~- E' ^! Q
  29.                 {! [. A0 \- [$ n- ^: R5 S
  30.                     charSet = charSet.Replace(""", "");
    4 {; F4 E! F  W3 j# n. q: N3 e/ o
  31.                 }
    # U0 ?+ J+ G* |: D* A. \
  32.                 if (UseUTF8CharSet)2 J0 o* `/ b& N& [; c0 v3 p
  33.                 {4 }9 }9 o0 j7 I8 n' Z" j
  34.                     if (charSet == null || charSet.Length == 0)3 S0 n# q8 F  ?9 C$ @% S
  35.                     {
    / h. v- ]! U' ^3 Q& B! }/ b
  36.                         charSet = "utf-8";
    5 V( o* f& h" W" {
  37.                     }
    4 }0 q/ M; S3 ^" W) q) M6 O
  38.                 }+ ~% m5 s' i# I* I
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)% u4 d& h- X, Q0 F9 Z
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    $ A% `5 g1 M6 C# [  s
  41. 0 _( I/ O3 h! b! S5 u
  42.             }% d0 c2 ?; X2 R. Y6 \) q
  43.             catch (Exception)
    % R& r3 h' S' I
  44.             {
    , T" V! R' J( f$ M7 o1 Z4 P
  45.                 strWebData = "error";
    % t7 B4 y( D( s
  46.             }% S3 p( h- v4 ~/ X% s, x2 ]. g
  47. $ }8 t( H5 |& i3 r; K) s
  48.             return strWebData;0 h1 y  A, q6 |; q* S/ d' L, E/ T
  49.         }
复制代码
' I9 \; X- ]5 P( _& m% I1 e
9 d. l$ F. n  ?2 E
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-18 03:41 , Processed in 0.052381 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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