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%,国内持牌机构  
查看: 9778|回复: 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 抓取全站链接
    5 F. G. j. x; k, Q9 v
  2.         public static List<string> GetAllHref(string url)! B; C7 F" q; f8 m& f
  3.         {
    - c  l; h" G8 g/ D* u0 F
  4.             List<string> allHref = new List<string>();
    ( t. p* L5 ~0 ~' t7 M! R
  5.             try" b9 x" S6 {" J4 H8 h% i
  6.             {2 Z3 B- ?3 h! a4 M) s
  7.                 string strhtml = soso.getHtml(url, "", true);% v0 B2 b& h( k4 N' J8 K6 o
  8.                 if (strhtml != "error"); [6 l! m2 d7 T- p- L9 R) V
  9.                 {
      F, B- q8 R4 f# L) ~" g/ b" P2 q; G
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    0 A, X, i( J- o/ I$ D2 x. Z% h
  11.                     MatchCollection mc = reg.Matches(strhtml);
    9 Y6 X, x/ Y/ k7 L2 e/ X
  12.                     foreach (Match m in mc)
    4 Q2 K6 z  e- T: L: F
  13.                     {8 X# f7 n  f0 i+ ~) Y: X
  14.                         Uri uri = new Uri(url);# k8 d6 e9 l( Q& r% J
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);$ x" k% w( m& B  C2 ~7 U, z
  16.                         string fullUrl = "";0 D/ s( R  w( u; i: c
  17.                         if (m.Groups["url"].Value.StartsWith("http"))7 Z4 p) r2 L5 j2 i
  18.                         {* V9 T! ^8 ?8 S2 ^% j
  19.                             fullUrl = m.Groups["url"].Value;
    9 w" M/ T  T, \; M+ Y
  20.                         }
    7 i% s. |' n- a5 `( Y
  21.                         else
    / j* c2 R0 e$ |; G. i6 h
  22.                         {
    : G  a$ [9 W7 X  K0 R+ _
  23.                             fullUrl = thisUri.ToString();
    1 D) ^2 Y1 t9 x: K" b( |) w
  24.                         }
    ; f: W' G8 y1 ]; E$ C) m9 e
  25.                         allHref.Add(fullUrl);1 b0 L* A- [/ I; z4 |# K* ^
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ! f+ {1 a1 Z- R2 C& @4 e4 L# R( v
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);! m5 k& q: Y: ?$ L
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ) l- F, E( {% x
  29.                         //Console.WriteLine("…………………………………………");
    " i' a" r9 k6 U
  30.                     }
    # W6 {- d* e3 _/ V, m/ Q
  31.                 }& P0 u0 {. [+ a5 B' H  g$ }
  32.             }
    / x4 N0 h5 i/ o4 I2 e5 r* s
  33.             catch (Exception ex)3 W: ~4 i0 l" V
  34.             { }
    ( K: |$ d: S( z) g
  35.             return allHref;3 W+ t0 A9 k) T9 O4 n; \
  36.         }
    ( o. o+ ^  s  k' J  I3 ^% K
  37.         #endregion
复制代码

' t' @" h/ W" x/ b4 A8 ^1 M2 z2 Y% ]6 Y$ `8 S1 c3 F

  1. . E+ D$ Z, @  i) y

  2. # B  t5 P  d0 M: {- u$ |
  3. 0 D  g- E! d5 d" s
  4. #region 数据去重, j6 {" w2 `( T1 @* i- }8 ~
  5.         /// <summary>7 L* ^6 k) {, A2 ]1 o, Y$ O' V% w7 N
  6.         /// List<string>去重9 _9 P0 S. l6 ~7 L% o
  7.         /// </summary>
    / m) n: t" U( Z/ u
  8.         /// <param name="list"></param>: R  V% X) X8 I) c2 B/ w: v0 h4 M9 m6 K
  9.         /// <returns></returns>
    0 p# M, E3 ~  q- I5 O
  10.         public static List<string> getUnqueList(List<string> list)$ y* Y* _; }9 R, [# `. ?
  11.         {: n! |; A9 {% Y) W
  12.             List<string> list1 = new List<string>();
    - }- M1 j! C) V* `: p7 v
  13.             Hashtable hash = new Hashtable();
    8 T% G3 E2 L' S2 A! u' j, _. i
  14.             foreach (string s in list); m1 M5 e) b% s' S# ^
  15.             {
    ) x0 K- ~( D; s/ }; z8 |
  16.                 if (!hash.ContainsKey(s))
    0 L- t8 u' o' v; J5 g# w
  17.                 {- v6 U8 X# Q$ r( H( O
  18.                     hash.Add(s, s);
    - z; A3 A# F$ S; D
  19.                     list1.Add(s);& c3 y0 Z( j) @  g3 W
  20.                 }
    5 c6 U1 m/ x/ J& y
  21.             }
    & N% \6 @! h, ]% B
  22.             hash.Clear();
    ( P6 V, d7 \6 J; I
  23.             hash = null;8 N  W( h% Y, A0 X* z3 Q
  24.             return list1;3 G' \6 i) _  G9 R/ f
  25.         }
    - P1 ]+ E1 \  y1 w% o
  26.         #endregion
复制代码
( ?+ B% r% V' V3 c4 D

2 x# ^9 Y5 @, J% {

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

- e. u- d7 k2 j  O/ F/ H% p! x8 y: o- z8 k十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:203 H) R; ]; s, V* {
十分感谢!!!非常感谢!!

7 Y  q6 R+ ^  p缺少一个gethtml,用下面这个:. h: p7 A* W, K
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    : k; k/ n3 R8 c  U, m* A
  2.         {/ ?5 M+ x5 B, O6 P& ~
  3.             string strWebData = "error";7 J' z" ]0 T2 X+ S
  4.             try, v6 C4 z. ?1 d2 v+ Y, K# e0 ~
  5.             {
    ; s6 ?9 Q' P0 x# i( g( n6 h
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 9 J) G5 A5 [$ Q
  7.                 // 需要注意的: 0 W* m, N: _: m6 r, X
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ) s( E% b: Z) ^: ]' J! R/ H6 Z: e
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 6 d0 A$ w0 v) W$ W& Y
  10.                 // webclient.Headers.Add("Cookie", cookie);
    : D1 b, a2 w2 e6 l
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    + \. ~. I+ A$ D( y8 g/ V, ]
  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)");% L8 Y2 G9 [; {! k6 }
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");. ~* H5 Y& v5 o# r
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    $ N( z# g4 e4 r& a
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    + u! S, }  I# N7 S' k9 V, h" p2 b
  16.                 //如果服务器要验证用户名,密码
    9 w3 X8 D* C" {# Q' f4 c3 w
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    : |) A) J) l! p5 E+ `4 ?; C- A7 Q
  18.                 //myWebClient.Credentials = mycred; 2 l' \) \& C$ l
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    & v3 W' N/ h5 @1 v% ?1 q; B
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ) h& Z: K- a7 f) S  p
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);6 c" Y: X3 W3 I9 r; _/ L

  22. 6 M5 K) D& _# J! g4 B
  23.                 //获取网页字符编码描述信息 / r4 v6 ]+ q" w
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);5 g$ B( o3 ]% K6 M
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    2 h6 _8 k9 b$ G, i
  26.                 if (charSet == null || charSet == "")
    $ _/ `- h; z) p) ~1 v1 p8 X' |
  27.                     charSet = webCharSet;
    / c( ]3 l! t( I' I# u% J0 l" q* `
  28.                 if (charSet.Length > 0)
    ' |- a) {! w+ K) O
  29.                 {1 D* T$ Z3 M/ P+ j+ I
  30.                     charSet = charSet.Replace(""", "");
    ( z! {) C  H! R) c
  31.                 }
    9 @1 l8 `) D6 d7 }  y' b; q
  32.                 if (UseUTF8CharSet)" g2 F4 X& r* @7 f9 x) O  S. S
  33.                 {2 E: p8 I. w: O) s$ G% l6 ^  o
  34.                     if (charSet == null || charSet.Length == 0)+ I% J0 d0 x' T: E8 d* z
  35.                     {
    % y+ q+ T7 i: A" w# l
  36.                         charSet = "utf-8";
    1 Q7 \6 o8 o: W7 R/ H9 X- \
  37.                     }& r2 _; N* H# v5 n
  38.                 }7 H* @5 u8 l/ V  a. t0 H
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default): c6 _& h5 _. [- A
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    6 h) k, E4 T; F9 H5 H6 _2 t

  41. % i; q% Z2 m6 X: v2 m) E, A$ c& _5 E
  42.             }% R$ {/ ]4 q( f/ W4 G
  43.             catch (Exception)& @; ^3 {, y" H0 ]& o4 F- X/ f! i/ M
  44.             {% D0 }! X  b) W% U# p# d' i* c
  45.                 strWebData = "error";' }0 }" V6 \- P2 v  ~
  46.             }
    * t. D" L" m. ?0 p1 V8 ~& V/ x

  47. & t  }2 S" ]2 a$ w- Y  i0 `$ ]
  48.             return strWebData;
    : L5 g# U' T( `5 n" A0 f/ u
  49.         }
复制代码

) g- j. |4 I! X0 j, X1 V, ?4 s
! M: l! Q5 M8 E
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 17:07 , Processed in 0.051648 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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