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充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理
Proxy4Free独家住宅IP池❤️免费测试联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 10012|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接$ P; m+ F/ Y- A) ~  R) M
  2.         public static List<string> GetAllHref(string url)
    & Q  |% h+ ]+ y9 u+ Q
  3.         {
    5 Q, V8 R( Q* F
  4.             List<string> allHref = new List<string>();
    % k& V" I- m' ?+ h: ~
  5.             try
    ; s# ~! }: |. B
  6.             {( j* k" p: M9 _3 L3 A% L, e/ d5 P
  7.                 string strhtml = soso.getHtml(url, "", true);) c7 I2 h3 Q& Y6 v: P0 h/ P" _
  8.                 if (strhtml != "error")3 w7 H: m. O4 M& p" M& e
  9.                 {
    0 D8 C& d3 K* l2 Z) d
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");" b7 a) v/ @2 ]" O2 [
  11.                     MatchCollection mc = reg.Matches(strhtml);
    & Z- @' d& U! w/ D$ C
  12.                     foreach (Match m in mc)# e  v" W( d/ _3 w; ^3 e
  13.                     {
    ) n6 Z: i/ H4 m5 J
  14.                         Uri uri = new Uri(url);- \* E5 Q# o) y9 F# [1 C3 k
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    0 I' N7 w) U, {4 r: {
  16.                         string fullUrl = "";/ h& h3 ~/ A7 ]1 X( V0 r
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    . }8 g1 \; H9 g$ }1 N
  18.                         {
    $ Z. a1 T/ K- H2 Q- b# R
  19.                             fullUrl = m.Groups["url"].Value;
    3 `$ C! w" v0 s: J/ |& M
  20.                         }. U% ?" n  z! v& y. |
  21.                         else2 J& E. ^+ [( u
  22.                         {
    + d$ q% C. V- G5 ^" \
  23.                             fullUrl = thisUri.ToString();
    6 C4 S% V1 d, i2 c  O4 C+ k: W
  24.                         }8 p) }/ s- N- w4 P
  25.                         allHref.Add(fullUrl);
    ' p3 A8 ~: Q* E7 }4 L7 R( y
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);( a- S; H: h7 P& k) \0 A
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);( y" a9 o7 F$ o7 |- J  }& |7 ]
  28.                         //Console.WriteLine("补全链接:" + fullUrl);% ~0 b1 S3 X6 t1 D
  29.                         //Console.WriteLine("…………………………………………");' W- y$ Z3 G* I
  30.                     }  ~0 L/ i* M" y# {8 d
  31.                 }
    & }! p5 O" n. a$ \# W
  32.             }8 Y- H5 t9 ]+ Z' M  |: x7 B
  33.             catch (Exception ex)
    5 R* d* {; m8 Y: I  y
  34.             { }
    1 c! G' k: \- }* ]& C
  35.             return allHref;
    & x& }) b% b" k' _# u/ z
  36.         }1 D9 w  B% K, K5 h+ ^# I
  37.         #endregion
复制代码

7 K8 F# H6 \7 [: a  q0 z6 I+ s0 C  G/ Z+ U' z8 w, {4 X! n
  1. 5 F0 z4 v4 }" K" g  m0 L4 y
  2. / Q, A6 D, j% O6 Q* [( L9 i
  3. ( b) }$ p! q: d9 |7 @8 V
  4. #region 数据去重& N$ r4 |; ]# z' ]/ f) q: m
  5.         /// <summary>" ?) |( U, a/ D2 o* N- ~
  6.         /// List<string>去重
    / L0 K: y! ^5 z9 [
  7.         /// </summary>
    " a+ C+ T6 N& y( o4 a6 l* `+ P: `0 y
  8.         /// <param name="list"></param>
    3 h: _% k" |- \
  9.         /// <returns></returns>
    4 N9 e+ \" x# _2 h& K" |* L
  10.         public static List<string> getUnqueList(List<string> list)
    9 e' o. d0 g  E! r
  11.         {& |# j. f6 E% S  |% g- z
  12.             List<string> list1 = new List<string>();
    ) d, u$ D7 _% z3 b0 \$ O1 M' r
  13.             Hashtable hash = new Hashtable();
    6 L% V" A# _' K  s
  14.             foreach (string s in list). z( I3 ]8 F0 l8 {3 ?, M% P. [" u
  15.             {5 N/ [* z( V$ o9 _  X) A
  16.                 if (!hash.ContainsKey(s))
    , _: h5 g- k9 T5 ]$ ^- B) E2 x5 B
  17.                 {8 F! |- E- r" V. C( l6 Q# W* [
  18.                     hash.Add(s, s);
    1 q* \2 F0 C1 ?  a
  19.                     list1.Add(s);4 g- w0 }2 |$ |( L2 i$ K
  20.                 }
    9 F% a, |2 J: |: Q& C
  21.             }9 f# Y3 D1 v: w) A
  22.             hash.Clear();
    . f) f1 D& L5 X2 w  `* T
  23.             hash = null;& ]( {) v: k% g
  24.             return list1;+ z1 k2 s6 k1 }" H3 {; v8 N; x
  25.         }
    / @2 c; \6 T! r4 Y8 X# q/ o
  26.         #endregion
复制代码

7 l" Y- n' x4 |% M* Z7 h
& E7 J2 W  |4 x: g! c  L& g2 R% Z

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
& E6 {" L' T9 _. L% P
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
& g1 ]% F9 e& Z; i" V# h) b" \. r) i十分感谢!!!非常感谢!!
, @0 E0 v) x, L4 Q# [) ]9 G
缺少一个gethtml,用下面这个:" ~1 e: [/ T3 B- y9 m
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    + v8 l0 r# h# P& J
  2.         {
    ' w1 V' F8 e- s2 v( v- {) S
  3.             string strWebData = "error";' [1 {7 D% F2 c  N
  4.             try
    1 i& T/ x& v- M% F
  5.             {' K/ M8 o1 `9 t+ z0 M& Q9 ?  ^
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient , @1 h8 Y7 r9 }9 u5 `
  7.                 // 需要注意的:   T% `, M: f) _9 s$ N1 K
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    3 h, F! s$ s( ^1 x
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ( J5 ^. C& D  k9 k9 B
  10.                 // webclient.Headers.Add("Cookie", cookie); # D0 M' I* Y9 N! K3 r# T/ o7 j  \
  11.                 //这样可能需要一些重载方法。根据需要写就可以了  {1 {+ U; M2 Q0 @2 y) ?) 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)");
    3 n3 m" f' K; g. _+ P2 G
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    1 {% U( P9 {- L2 v
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ) x1 y) h- f- w4 l
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    # H8 P/ I; ~$ {
  16.                 //如果服务器要验证用户名,密码
    ; B: F1 S0 ?! B8 Y  I6 S
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 3 v+ s; j/ I, ^% d  w
  18.                 //myWebClient.Credentials = mycred; ' W5 M, O- `7 |  K. t
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)   e' u" o; e! Q$ g
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);+ h- h  O  m$ `3 }1 v
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    % G9 m: D- S0 F# h+ ^0 |

  22. ) y4 Z! x! w+ s2 ^- B
  23.                 //获取网页字符编码描述信息 : B) G0 W& }0 j6 C4 ]# s3 S
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    2 ~; B0 ?$ n  i+ t2 Q: }
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    2 I( p# H& H/ Y4 e
  26.                 if (charSet == null || charSet == "")
    & C) ?& ]4 m( J. b
  27.                     charSet = webCharSet;
    5 \, e7 g7 [) a8 Q5 Q/ m  {  s9 `
  28.                 if (charSet.Length > 0)" ~: m% R7 ]3 [6 d. d: C9 z5 W# ]) Q
  29.                 {9 h  ]: e, }* K% S
  30.                     charSet = charSet.Replace(""", "");
    . t7 \. t! K) E
  31.                 }
    8 \' a1 P5 r* W0 x( t, f
  32.                 if (UseUTF8CharSet)
    + X8 N' L4 J. [
  33.                 {" a% F6 a1 P; M- O" C0 i% W
  34.                     if (charSet == null || charSet.Length == 0)8 z/ e# Y7 h7 y4 I0 ]
  35.                     {
    * H1 N& j. w; W6 _* ?
  36.                         charSet = "utf-8";. P# ~& n2 \7 x, e
  37.                     }" r5 j8 y& b9 A; z; |) Y- k
  38.                 }. q' U* A! c* e8 D  }5 M" E
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    " y0 c$ v. T; D9 {$ ]" H
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);4 t. w  @0 n: \* e

  41. * f; _/ w) \) x2 D  o, l8 W0 c
  42.             }
    ' D. k( X) y8 w+ ]6 x/ ~
  43.             catch (Exception)* Q) a% l0 _" g, K. P2 f. a
  44.             {
    5 ]0 D- s) g% \4 e* X9 r1 F
  45.                 strWebData = "error";
    . |: B8 s& L% \! f
  46.             }; x/ Q( v9 g9 n% _

  47. ! N: n+ V$ Q, ^8 ~4 m, g
  48.             return strWebData;
    " N7 F  v/ {7 t, V) E( b
  49.         }
复制代码
* ]$ ^# ]# U9 ]( Z+ e, _
0 H' `$ x4 c9 w& X4 \6 P6 K
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-4 19:55 , Processed in 0.054570 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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