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

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

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    / _- r; A8 _* i% i$ ^6 }8 f
  2.         public static List<string> GetAllHref(string url)
    3 C# A$ P9 r; X( R- ^
  3.         {0 U6 u7 x% C; x* f9 C7 R
  4.             List<string> allHref = new List<string>();& D- |* w+ K" X* S" a9 k
  5.             try
    - R( t; n4 P, [4 S8 p
  6.             {9 _7 c# Y9 }, o& w
  7.                 string strhtml = soso.getHtml(url, "", true);$ ?6 Z# _6 c+ @7 ~: j) ^0 X: _
  8.                 if (strhtml != "error")
    , z' {+ }) l# Q7 L
  9.                 {7 P3 w' N$ P: o3 b2 [3 M* j
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");7 i" k/ C/ y" `' N6 o* o
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ) s, {# D: R# A5 {! P! i4 d' F
  12.                     foreach (Match m in mc)- V: g& S' F1 ]& ^
  13.                     {
    ! s; g. v( {/ ?7 F
  14.                         Uri uri = new Uri(url);
    * u& ^  R, f" W8 O2 u) s0 F
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);0 P" X2 l) P2 C/ E$ d$ t: `
  16.                         string fullUrl = "";
    % f9 J. b$ @4 }9 M! W
  17.                         if (m.Groups["url"].Value.StartsWith("http"))2 K' v  W2 _% F* f% F  h
  18.                         {$ r% K- o/ A2 g  S& Y
  19.                             fullUrl = m.Groups["url"].Value;* N# i% k4 t( }/ p
  20.                         }
    6 s6 {1 W0 C4 h. {# \, k& ?- v
  21.                         else
    # x* N# e7 Y; p5 D! u! Y; v% }, o
  22.                         {
    6 K5 U0 o* I1 j/ L% x
  23.                             fullUrl = thisUri.ToString();- }, m3 K0 w3 Q& Q- [6 |6 c$ J6 q
  24.                         }
    . }, V  h# C4 T5 A/ l- P
  25.                         allHref.Add(fullUrl);
    : d. X- ^! ]. O# J5 m/ A
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    # `3 p4 G7 u: w3 F. }( S* m  r
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
      b0 {8 N+ B8 z& p; Z( [6 k7 F" W& R9 v
  28.                         //Console.WriteLine("补全链接:" + fullUrl);2 q$ h9 X( P  |& B6 Z# o
  29.                         //Console.WriteLine("…………………………………………");
    . m0 S6 b( E% L; `! s' q. L( I8 S3 r
  30.                     }' _5 _7 h/ B3 ?1 P8 f& C& |- J3 m+ x
  31.                 }
    ! E/ z4 F, G% [" D* X+ _
  32.             }3 w8 K* b$ V- U5 ^" d
  33.             catch (Exception ex)
    6 D/ [$ d# M! D, I" t4 a
  34.             { }
    2 ?" {6 E3 B9 t( k# A
  35.             return allHref;: ~1 o$ q; w( P  C8 e
  36.         }2 {5 L$ O0 \% e8 }0 w5 h
  37.         #endregion
复制代码

2 R$ e/ l- q) V# M; _7 X# N
4 I$ t0 E% n4 q

  1. & j2 R& g; e' b, I
  2. 3 ]8 l7 t; ^) Z
  3. ! G6 \. Y# ^& s& O
  4. #region 数据去重- b: j5 j8 `- Z5 v* b
  5.         /// <summary>! s5 q  k8 Y  F. J5 W
  6.         /// List<string>去重. c  j! s. b  y  m+ E
  7.         /// </summary>& z/ T8 C/ m% F5 o  p' ]' }
  8.         /// <param name="list"></param>: d7 O4 Y5 G8 l* x
  9.         /// <returns></returns>
    5 S. V' T& G& k
  10.         public static List<string> getUnqueList(List<string> list): h, G" h! ^4 |* j
  11.         {- \2 x, t8 A" v+ w7 h1 e/ h) L/ v
  12.             List<string> list1 = new List<string>();
    8 Q* u, B; r) l2 S/ J& h, }! |
  13.             Hashtable hash = new Hashtable();3 d" y& u: Y  U* y0 s: W( ~; _
  14.             foreach (string s in list)
    : e$ C, h9 G- ?# ~& ?$ r& d0 Z
  15.             {
    ' T0 P- M3 J& [/ S0 X
  16.                 if (!hash.ContainsKey(s))" G- T7 L7 Z) D# G% B7 B
  17.                 {
    $ A8 \* T" C  M, F1 w5 }1 E! ?
  18.                     hash.Add(s, s);+ P# A4 V0 Y! m/ N! x# O+ ?& [
  19.                     list1.Add(s);- W& y0 \2 D+ Z8 P5 ?
  20.                 }
    4 R* b$ [$ W; Y
  21.             }! B: e9 F4 G4 c0 @% }( @/ C
  22.             hash.Clear();: v5 p1 n8 z5 ~# _% V" K# x: F9 y
  23.             hash = null;
    , z% `; ]# B5 v7 i! `
  24.             return list1;* Z- I& V! J5 g& P' j! u; Z/ K% D- \
  25.         }2 O% S- O% p0 C
  26.         #endregion
复制代码

* }: |) {: G$ }9 C
# H, S- }* w8 e0 B

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
" Y' u' }% ?2 T$ a
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
4 `' D! _* c" }: H( P十分感谢!!!非常感谢!!

( G' {5 C8 {/ U9 b7 R* X1 i& x; t7 x缺少一个gethtml,用下面这个:
3 _$ A: Q+ U+ X* f6 S
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 9 y4 I  `  S5 Y! r  P
  2.         {3 X1 v. F9 q# O
  3.             string strWebData = "error";+ l% A+ p% m! k$ K* T' i7 B$ c
  4.             try
    5 m8 {( b& Z" s( y
  5.             {" o& h9 o  y# f9 `( C; ^
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient % V/ F$ C# {1 q8 s& U
  7.                 // 需要注意的: * I  j# U, Q9 R
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    3 W  d- O. W4 D6 U
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    6 a% e3 N( R+ O( ~* s0 x$ G
  10.                 // webclient.Headers.Add("Cookie", cookie); ( G3 ]; J4 ~8 a4 ^/ `  g- t0 P5 a
  11.                 //这样可能需要一些重载方法。根据需要写就可以了# M$ T3 r; @$ e2 \4 o4 y0 Y
  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)");
    / r6 Y0 @9 U  W; O+ z- Q. X
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    6 N3 u8 `- ?- U- D
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ! F5 ?/ x8 ]& G, L) P
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;. e- I% o7 _: n* Q1 [3 C
  16.                 //如果服务器要验证用户名,密码
    - q+ u& A7 x3 u4 T, w+ L
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ; A, \, `& ^/ w/ X+ `1 C2 v- s. e
  18.                 //myWebClient.Credentials = mycred; 8 l  _$ L: g0 }8 V! g
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    . F# H% b( J. ]8 g
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ) p, o- b5 ^4 Y+ A2 Q- J
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);3 I+ i- r  j4 _5 q) S
  22. 4 A0 c% G* H0 S# S2 M: S
  23.                 //获取网页字符编码描述信息
    / o6 C: W, Y0 _# |3 p4 m
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);1 a  d4 S4 }2 X
  25.                 string webCharSet = charSetMatch.Groups[2].Value;, j: L& ]" K6 k& n; W9 {
  26.                 if (charSet == null || charSet == "")
    ( b# A* T6 g8 n2 w) T8 u
  27.                     charSet = webCharSet;, N# Y! h' M6 F8 |4 {$ p
  28.                 if (charSet.Length > 0)
    . o! A( _. B6 x) L, d" Z
  29.                 {$ O9 o0 H" G* B, t8 ]+ C
  30.                     charSet = charSet.Replace(""", "");: i( f1 v( A, J: |! x0 J
  31.                 }( l8 n2 w! _4 M' T5 K
  32.                 if (UseUTF8CharSet)
    * x( _+ @- ?2 z
  33.                 {/ W, e9 b8 u3 L" p; r, x
  34.                     if (charSet == null || charSet.Length == 0)
    ( {' y( W7 j; I- p" i& k2 p6 G
  35.                     {  A& c( @& R- y/ ~% i
  36.                         charSet = "utf-8";
    , _8 t+ A. F, O! G5 }
  37.                     }
    " ?9 [5 Y- R4 c8 J  f& i% i
  38.                 }! P6 I" Z  T0 U' V/ `3 u$ M
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    " E: P& r# E- `  @
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ( H! Z9 E8 E% K0 Y: O* i

  41. , i/ Z  q8 @: c7 D; X. E
  42.             }
    3 B; Y1 p7 V) K( y% X
  43.             catch (Exception)
    5 [" A, e! u- U! w% D0 [$ ^! N) ?
  44.             {
    # J5 C  F; z& ^3 K' P
  45.                 strWebData = "error";
    " i! B: [$ s. i. m, z9 y. T: s
  46.             }
    - O( Y# X+ H) y
  47. & @5 r' Q& ?2 H" `
  48.             return strWebData;8 e7 B0 R/ l4 p* v9 {* e0 U- r
  49.         }
复制代码
- O2 o3 [# \, f% Y% I$ Q
  i  P- I$ [( d
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-30 23:30 , Processed in 0.058928 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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