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找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9873|回复: 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 m. n) M- e8 v. B$ d5 Q% ?
  2.         public static List<string> GetAllHref(string url)% g1 _$ s+ F( W
  3.         {
    $ F2 q7 F( X5 A- r) r) R+ v
  4.             List<string> allHref = new List<string>();! B0 p6 W( t+ P7 o* `6 C) Y
  5.             try5 u* W" |; L" o9 v8 h
  6.             {' B1 J% K7 Y: c2 [- D
  7.                 string strhtml = soso.getHtml(url, "", true);
    2 Z) x% s% y- s
  8.                 if (strhtml != "error")
    , E' i. H. h% u
  9.                 {) \% O9 ^7 ^" x1 w1 M: P& {: x/ p
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");  p6 s+ H4 Z% z0 Z
  11.                     MatchCollection mc = reg.Matches(strhtml);
    - J* ^( I9 o: q5 O! z" j: o* U
  12.                     foreach (Match m in mc)5 [, E; r) K, Q" }2 c
  13.                     {
    & l1 g& o& e4 v3 ~1 Y
  14.                         Uri uri = new Uri(url);# u: L, |+ J0 }
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    3 ^; a. }+ u/ r7 d% X
  16.                         string fullUrl = "";" i' b- g! t' V7 W& E; L" c
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    % y, E1 |6 f& |% z! d6 j6 ]+ A
  18.                         {+ I9 I1 q' c( d8 b4 R$ L! O! d
  19.                             fullUrl = m.Groups["url"].Value;* `, T$ J! C- j5 M% M0 A
  20.                         }9 ]8 Y2 L" g, X7 ?$ ^2 T) G4 R  z
  21.                         else0 p9 g4 c) n* d- P
  22.                         {. N  s6 W/ Q8 X8 G5 _; K' e
  23.                             fullUrl = thisUri.ToString();# G) W# T# r  `" u6 i+ H. Z, Y' h' l2 D
  24.                         }
    * ^, ~0 G& S& O, j0 U
  25.                         allHref.Add(fullUrl);) X# a' K0 m9 x
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);( ?. L! I: @, l2 L; U6 J, k
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    , ]+ d8 y5 t) E# _
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ; Q$ Q1 t& p: [( e0 Y0 s
  29.                         //Console.WriteLine("…………………………………………");
    ; h5 W& y7 z; p! g
  30.                     }0 ^. Q3 u( I! a& q+ w# z) Q
  31.                 }, M* r" O4 t+ R
  32.             }
    * e" g3 S$ ]( m( g$ ?
  33.             catch (Exception ex); Q: k5 G' d0 Z* A2 \  m. [
  34.             { }8 Y& ]8 c3 M7 l  }
  35.             return allHref;% D3 i# e% F( S  p+ e- S) C
  36.         }% W, s# N4 X/ A# |
  37.         #endregion
复制代码
2 U1 d7 v; p7 z

' ?5 o: d" K( a1 O

  1. 3 V7 J" Z, X& ^4 l4 `, B( _
  2. : X& j% `+ c, m7 L1 [
  3. 4 D( o: R' S0 Q( l$ T7 I8 Q5 L
  4. #region 数据去重9 P2 v2 z3 h7 {; k3 x
  5.         /// <summary>
      i/ ?/ k# {, L
  6.         /// List<string>去重  y" l1 c& W; j* @. v1 N1 v
  7.         /// </summary>
    1 V0 M: _1 W5 k9 M; n+ e
  8.         /// <param name="list"></param>
    ( L2 N. a6 p7 i  h( L
  9.         /// <returns></returns>2 L2 x% t; G+ u& W
  10.         public static List<string> getUnqueList(List<string> list)3 @  o9 \1 N: P" d: Q& }1 k2 u- O/ G
  11.         {
    ) n6 C# F" I& C) r, V: u
  12.             List<string> list1 = new List<string>();
    : W' f% T% p6 r  A$ }, f/ e! P
  13.             Hashtable hash = new Hashtable();
    3 x$ }# `; N2 Q$ {2 X' }
  14.             foreach (string s in list)
    ) }- ^0 C- N. V+ g
  15.             {
    6 v! P: p; Z% k/ u: K
  16.                 if (!hash.ContainsKey(s))
    % ?5 l# b) ^7 n( |1 c0 l3 i
  17.                 {
    6 {$ Z4 h" z0 e+ N: b
  18.                     hash.Add(s, s);
    # ~/ r- ]4 w) U5 H! t
  19.                     list1.Add(s);
    5 w7 D6 C* B3 G  B/ q
  20.                 }% Z' A) w3 G. Z0 g
  21.             }8 |: R7 \) `3 H* C; R, O2 h$ W
  22.             hash.Clear();
    $ z( E$ {% q) i- z4 h  Z
  23.             hash = null;# k$ W" w, U+ a* [
  24.             return list1;
    8 \/ a  A! Y! k! w7 s9 _
  25.         }2 L6 H! J9 q, S4 {
  26.         #endregion
复制代码

# k1 g. p7 n8 o  J/ f; d
: D; Z9 Z) G) V1 q: }

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

+ m2 o% ^& p4 M0 }# r& N  ]十分感谢!!!非常感谢!!

点评

缺少一个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
9 @6 @- O8 w+ y' m! [0 r十分感谢!!!非常感谢!!

" |' Y8 x; s3 c7 g: B' l' d缺少一个gethtml,用下面这个:7 g% u5 I1 ?0 p; |3 x5 p/ @
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 " [1 [! w1 ]! A$ e( Q  m+ P+ S
  2.         {
    6 X' w) \' Z4 t$ Q# F
  3.             string strWebData = "error";9 t$ q( {0 O# u! m3 |
  4.             try6 `: Y& l; G6 K3 N, i  e
  5.             {
    ) p' O! p# z/ P9 n
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient # o4 l! z7 i0 V" B
  7.                 // 需要注意的:
    : A/ \! a8 |+ t2 g: Z$ U( U( Z
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    * p5 W" d$ Q) O: |+ `
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    9 y- B, W7 s' C
  10.                 // webclient.Headers.Add("Cookie", cookie); : `+ n3 O  j1 N2 h1 T2 j
  11.                 //这样可能需要一些重载方法。根据需要写就可以了. ^0 D+ y' q  e" _% u) z. f
  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)");1 H' x; p& C6 r! A: ^5 ]
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");% U) J% _7 k+ L* L. w
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    9 w) B, O2 T- ?' ~
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;) ]) e; d0 R5 T
  16.                 //如果服务器要验证用户名,密码 . |$ R6 S7 s: X9 H3 q3 P. z3 ^
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); , m, h* J& b9 b. r8 o* A
  18.                 //myWebClient.Credentials = mycred; 0 H+ R8 }4 w) \
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) # n7 s1 P/ |* C
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);. B# S/ \( C6 w& U5 g2 [; }
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);, n8 G% ?  F: B! R* A) y

  22. ( X7 \7 g, [! p. J
  23.                 //获取网页字符编码描述信息 ! ^% r" P* }( p0 P# {+ P
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
      h6 Q6 ^9 y/ ?& K8 B
  25.                 string webCharSet = charSetMatch.Groups[2].Value;# Z# Z7 J2 R; @) |, y7 D3 L7 P3 s
  26.                 if (charSet == null || charSet == "")
      o7 E* z% ], s
  27.                     charSet = webCharSet;
    . @+ K, x( ]( D+ k- [' e# Q
  28.                 if (charSet.Length > 0)
    " E* l: j) K% w  t/ \+ Y; C. c
  29.                 {% y2 f* L; M; J! {' w
  30.                     charSet = charSet.Replace(""", "");
    3 A1 U4 f* _' t$ e' M$ ~: k5 M
  31.                 }
    % O/ b( F' G! V# \. l8 u, B
  32.                 if (UseUTF8CharSet)& f+ y' e) g" d* u: n* ~
  33.                 {
    : f( h! s% K  i  O1 O! F
  34.                     if (charSet == null || charSet.Length == 0); r' a5 s9 p' D$ j
  35.                     {
    + Q8 Q# G+ c3 ?' G
  36.                         charSet = "utf-8";
    ) d' v$ R' ~4 l  W9 u
  37.                     }/ B$ h. {' P, d! a0 l% H1 \, e+ X
  38.                 }
    / u) O7 \0 @5 b' W4 [
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default): W4 J1 E. c* Q' o
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);! r9 s( H+ E5 D% J
  41. , g# U+ z3 b; ~, `' ]9 l* @
  42.             }4 _" t- N9 A+ a7 A4 ?6 O4 k
  43.             catch (Exception)
    2 m5 i+ k/ o, T* ]' B! [
  44.             {
    3 b, `0 Y9 S4 a% }: d* N
  45.                 strWebData = "error";; G' m# b* M, }5 o+ I% Q
  46.             }
    3 Z3 @. @% `! k# a! f
  47. 0 G4 N  v  Z& V$ P  w" Y
  48.             return strWebData;
    1 k$ w$ [2 x* u
  49.         }
复制代码

/ a9 `/ W, V4 q' c% C* i' |; ^; r; [& d) [" V+ B8 t+ m4 F0 \
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-18 12:23 , Processed in 0.059962 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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