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/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷智能风控,过审95%广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9847|回复: 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 d! ~$ y% |: E# n1 O( g
  2.         public static List<string> GetAllHref(string url)
    1 M  F) W+ L% @" T4 \
  3.         {
    - I* Y( Q! F2 a$ f
  4.             List<string> allHref = new List<string>();
    - g  q& e* V0 b0 N4 p
  5.             try
    ( ]4 S( z0 U$ k6 T
  6.             {
    / h0 o: M8 a0 d5 J- g
  7.                 string strhtml = soso.getHtml(url, "", true);
    1 d1 }% B; O+ ~* M: j3 c
  8.                 if (strhtml != "error")
    / H! y( N/ T, c# Q, e1 x
  9.                 {
    * F0 d9 D3 _- o- ?
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    , p8 M* Y' Q) T( j7 I3 b- H
  11.                     MatchCollection mc = reg.Matches(strhtml);
    $ P1 }& P: g# s* |- e; U
  12.                     foreach (Match m in mc)- x8 w6 n1 z; o8 Y4 b  O
  13.                     {8 c; z* ~4 {' g& y; Z! M" Q- u9 ?
  14.                         Uri uri = new Uri(url);
    7 \5 ?& X9 _# i/ q! p
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
      t, p( a1 D1 L+ t
  16.                         string fullUrl = "";
    / n2 Z( `( s) @9 e6 c" T
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ; W# ^8 B  r: [% O
  18.                         {
    6 h# g  [) y3 |8 Q. y4 V& x
  19.                             fullUrl = m.Groups["url"].Value;
    ( b3 |( ^1 W6 S
  20.                         }
      ?5 e. r2 c0 k/ L% g' N- v
  21.                         else
    8 U! P  }; u. s+ Z
  22.                         {, T  ]6 Z8 }" e6 t
  23.                             fullUrl = thisUri.ToString();
    . \5 }' e6 o* `5 w- C1 x: Z
  24.                         }2 W# X+ D9 T" H; V3 T# m
  25.                         allHref.Add(fullUrl);
    : T* |5 U9 v6 o0 z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);' N' s7 Q8 A; X& R
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);: L- D- B% R; d/ T& j
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    : {' z/ \2 s: M2 j. o* @
  29.                         //Console.WriteLine("…………………………………………");
    ! D: g' K: n: h% a4 f
  30.                     }$ W& A, B$ k& E- f2 w8 V% w# U
  31.                 }
    5 T4 l. \: p8 p" V7 j
  32.             }, \( w6 V  e6 `' T
  33.             catch (Exception ex)9 \7 t8 I8 I# g* m: K
  34.             { }% I: m1 r/ L# r
  35.             return allHref;; S$ \$ n# i! ~0 @; v, N: x
  36.         }
    , c0 e  \+ U& A/ h% g. A# a2 N
  37.         #endregion
复制代码

) _7 o0 b; l0 Z, c5 ~$ m: D
: G/ @; @( a/ T; d" W
  1. ' H) E6 o6 B, I  O
  2. 9 M5 K( Y  V4 C4 V

  3. * Z# G# g9 J# M. ]
  4. #region 数据去重2 k+ m2 B3 f' B$ y% M2 Y5 T
  5.         /// <summary>! a' t& W+ z! A
  6.         /// List<string>去重: o! ]8 ^7 E" {# [" a- l
  7.         /// </summary>% T/ X, h6 r9 F2 B! Z& Q
  8.         /// <param name="list"></param>
    / h# _1 _7 Y( w& b
  9.         /// <returns></returns>! E# ]* f7 a' `# k: ~! E
  10.         public static List<string> getUnqueList(List<string> list)
    9 c8 X1 u% g) Y6 e. H
  11.         {: w$ t8 y* C$ B7 i* n
  12.             List<string> list1 = new List<string>();
    * f. ?" A  ?7 Y/ y; D3 ~' p: Y
  13.             Hashtable hash = new Hashtable();, z0 a2 c+ m" p6 F0 ?+ N6 Y) h
  14.             foreach (string s in list)
    ; t0 q+ A' i; U$ t: D( h, c
  15.             {" n( d- J" I& G9 Q! l
  16.                 if (!hash.ContainsKey(s))2 F) J) i2 k$ M  o  [8 S
  17.                 {
    + k, x. ~; Y/ F! g. J
  18.                     hash.Add(s, s);- m6 O: t) P& O  ]& d- T
  19.                     list1.Add(s);5 W8 F9 C5 r9 L3 ~" Y  e! |! ^3 H( W
  20.                 }' f. ]* x: i2 q/ ^5 ~" X3 A2 y3 s
  21.             }4 c9 W  A7 J, d
  22.             hash.Clear();7 w5 z% N: Z6 P
  23.             hash = null;! t/ x/ s, y- B3 c6 d% J
  24.             return list1;6 e  W" L" D8 x+ ^0 f; S  M$ u) }
  25.         }% H9 h8 B: ^. D  ?
  26.         #endregion
复制代码
) t, Y! N9 n% j
2 {% v) ^/ F1 Y% {. R. ]4 {

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

& {3 _) C% S. b# S/ o2 @0 v( D十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:202 U% l8 B8 y2 x
十分感谢!!!非常感谢!!

9 \7 B! D& `; l6 m缺少一个gethtml,用下面这个:; }: P" k% z" z4 E5 A% C+ I' P
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    & n0 [- T6 V2 B
  2.         {
    ! [1 U2 P7 {3 A4 D( v# y; L
  3.             string strWebData = "error";
    ' l. V! B7 t7 l
  4.             try
    4 P/ |- ~% q  _
  5.             {
    2 `) |: w% c) T1 j: o: E! J: `
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    5 ]" R/ m% B! ^
  7.                 // 需要注意的:
    , w& X2 y5 Y/ h9 t8 h( A# m
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 0 L1 T/ z0 p4 @8 [) n
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    8 i! L1 ?" F; R3 G
  10.                 // webclient.Headers.Add("Cookie", cookie);
    . D9 a5 q" q- p7 h' q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了9 N) ~/ W* P+ R* |6 b# S6 z! [: ^
  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)");8 S- ?6 }: G, ?9 t; V. S
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    & v) b$ K) S; [  q
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ! M3 |% Y1 d6 f# D$ l- F
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ; f1 S0 X1 A  [
  16.                 //如果服务器要验证用户名,密码   |7 [) U; w9 _' ^
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    5 I1 x6 g+ v4 @8 j  m9 y
  18.                 //myWebClient.Credentials = mycred; ! H, X* T9 s$ Z/ F
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 5 a% @1 N$ T$ y, b+ p' z2 f8 x
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    9 L$ z5 l4 ?0 M3 R9 n. R' z
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);% p" d/ ]/ r) x6 b& S  c. ^- i
  22. 0 N/ C6 p) n" W; X* J
  23.                 //获取网页字符编码描述信息 0 H7 ^8 w4 H6 L8 U6 ^& x& p+ O6 W
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    % t# O5 k; o# K
  25.                 string webCharSet = charSetMatch.Groups[2].Value;8 Z  V* C! I' R
  26.                 if (charSet == null || charSet == "")
    3 t9 j. b4 d# c6 I$ ?& s1 w6 m
  27.                     charSet = webCharSet;' P& d6 j% Z/ k1 {5 l/ d( _$ x* B) ]
  28.                 if (charSet.Length > 0)/ t4 v" h/ q5 S: l& m2 _
  29.                 {
    6 X9 ?; Q+ e; m% D
  30.                     charSet = charSet.Replace(""", "");* [9 y  C+ F& b/ a
  31.                 }
    9 K3 q2 R5 P; A( ~( \) @" h
  32.                 if (UseUTF8CharSet)5 m. b- J' T3 J4 _2 c
  33.                 {
    6 x2 D  ^8 v$ d9 W" ~8 B" b
  34.                     if (charSet == null || charSet.Length == 0)
    ! M/ s/ N) m, e) s+ b) V9 U: x& c
  35.                     {# L8 m4 Y4 I+ `" m$ d+ J/ i
  36.                         charSet = "utf-8";
    7 v& {  }& C( ^2 o: h! T& I' u
  37.                     }
    9 i' e7 c7 L" d: q
  38.                 }
    - a" a2 l9 h. s, ?: B. G
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    ! F5 j5 ?0 v/ T8 E7 R% w* T
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);8 Q7 b8 [) k) g9 \

  41. 3 }# Q. E, X; w  d3 S/ I8 P3 Y3 F
  42.             }
    , e3 @4 N* }5 _+ K% _: X0 ~
  43.             catch (Exception)( m; `  P$ F$ z0 ?8 b# F! W
  44.             {
    , B0 E3 }9 e0 {5 q7 k$ r5 C* c
  45.                 strWebData = "error";
    ! n. N7 a5 C( P* D( `. K9 T8 h
  46.             }
    , J6 U4 w  s1 G0 ]0 L) L
  47. . t4 \. W1 u; i+ N. Y* R
  48.             return strWebData;
    * P0 K% d( [1 n1 k% V6 u6 h  J
  49.         }
复制代码
! l6 |- L8 R" w% d0 {% d

- @% ]& S4 Z9 e& T+ q
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 10:32 , Processed in 0.059480 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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