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代理各种主页、账单户、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%,国内持牌机构   
查看: 9867|回复: 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 抓取全站链接
    3 Y1 I5 I' m- v" R  ~
  2.         public static List<string> GetAllHref(string url)& F* _1 u- p/ O% w, x
  3.         {. w8 L6 m: R, B: u# h& k
  4.             List<string> allHref = new List<string>();& u3 G- s! e" }1 s, |) _
  5.             try# i+ w+ h0 y' D
  6.             {
    + }7 Q& o/ s5 W/ q( u* p# G6 ?
  7.                 string strhtml = soso.getHtml(url, "", true);7 D' D* z/ h8 G
  8.                 if (strhtml != "error")
    4 x$ ~( Y5 T; S
  9.                 {
    . M$ i- W- t2 ]1 p. q
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    + K( ^0 m( u3 m" J* x2 B/ B
  11.                     MatchCollection mc = reg.Matches(strhtml);7 l% R9 p" V6 e3 m' {
  12.                     foreach (Match m in mc)
    4 P: ]& J/ N& x. `1 z! B
  13.                     {
    ( M1 ?2 x) k( U
  14.                         Uri uri = new Uri(url);% Y" `& v: H6 d7 {( U" Q+ J
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    . K" H& K  O+ F8 J: L4 I
  16.                         string fullUrl = "";
    + z9 t/ q& J3 Z& G. k+ D1 f: ~2 Z
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    $ ?( i7 A9 @, @& m% D) h
  18.                         {+ _7 J# O$ l/ C: L& y
  19.                             fullUrl = m.Groups["url"].Value;7 P+ P$ _, F) I6 u2 w
  20.                         }% E  T1 t0 Y; M. e! J9 A: m
  21.                         else
    ' ?( C0 d" W- I. F& w, ?( m: E
  22.                         {* S& @" b7 u; m% |
  23.                             fullUrl = thisUri.ToString();
    3 o0 N# _) Z; u" m0 ]* Y
  24.                         }
    ! ]' N) t# t9 s4 i7 b+ k3 |
  25.                         allHref.Add(fullUrl);+ u( \" p9 u# R' d1 t, n
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);. {" t# `, W3 d7 @' [
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    5 _0 H& N& @, W$ w8 u0 V
  28.                         //Console.WriteLine("补全链接:" + fullUrl);* `( k+ u) ]1 x
  29.                         //Console.WriteLine("…………………………………………");
    " R6 C* x! b& V% h" N, A& B" W! M
  30.                     }
    ) }1 a/ b4 y- Q" t
  31.                 }
    3 X  O3 g7 [+ l# A3 ~
  32.             }
    ) ?- V6 M, e5 a
  33.             catch (Exception ex)
    7 W+ b. s9 D; d: U. S
  34.             { }: Y2 E1 a0 f: e2 ^. C
  35.             return allHref;2 u" b) b/ e/ R1 i: h6 b4 L9 Z
  36.         }
    , M. Y7 C% R6 N# z2 v, _4 U( {1 t
  37.         #endregion
复制代码

% n1 Y" G+ A! G4 q8 H. u7 G, o* a' a  o
  1. & M/ v& `5 D, T6 N% L& t

  2. . ]! e' i* M9 m6 M

  3. . P/ _3 S9 g. f* x* e/ X* n$ S$ ~
  4. #region 数据去重
    + H1 a0 |' L7 S$ j. U" \
  5.         /// <summary>' K# f6 I1 W( X+ s
  6.         /// List<string>去重* e8 s$ n+ R6 U# @, a
  7.         /// </summary>1 h% q1 D8 m6 ^" p7 q+ r1 E
  8.         /// <param name="list"></param>' Y2 @2 W. t* E9 A2 g* F( \' W
  9.         /// <returns></returns>/ r  ]) ]8 E. Y
  10.         public static List<string> getUnqueList(List<string> list)
    / ?! X! v  J. @9 H( X
  11.         {
    7 w# n' L6 W8 X" v& T& r, ]
  12.             List<string> list1 = new List<string>();7 p5 S0 ]! V5 K% u6 T! @/ O
  13.             Hashtable hash = new Hashtable();
    7 T& S4 z; w8 O8 A5 U
  14.             foreach (string s in list)- r* A& r9 A# h$ D! u
  15.             {
    6 H" k% A" c0 s" q
  16.                 if (!hash.ContainsKey(s))
    ' o) s( E" K3 J
  17.                 {9 O. d4 U5 i: E3 p3 T( ^
  18.                     hash.Add(s, s);! x. [/ T$ G. c& i# z
  19.                     list1.Add(s);
    : _* w7 w; g& b. s1 Z
  20.                 }4 o1 ]; h& `& @1 U- ?+ k) g
  21.             }
    3 m8 X( b' q! `6 \8 K
  22.             hash.Clear();
    3 q# m( F  }3 C
  23.             hash = null;2 A( o5 A) [9 b, i7 I- ]
  24.             return list1;, F" t7 Z, d5 K
  25.         }
    ! B& t: l& K' `: o. y
  26.         #endregion
复制代码

/ I" b9 }- @8 p3 L- h3 x3 r+ V3 e7 ~3 o* V: m

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
; M, ?# Y* }! j$ l
十分感谢!!!非常感谢!!

点评

缺少一个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
$ [/ \, J. C7 F5 E& p! v十分感谢!!!非常感谢!!
& S. d: Z; v% o) b  k7 Z+ }
缺少一个gethtml,用下面这个:4 F% s! ^& V- [* `; N" z
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    $ X8 b/ ]+ e: t; {5 q
  2.         {
    3 _/ X3 n/ @: j; u0 E3 g
  3.             string strWebData = "error";
    ' z% a4 ?: m8 x3 t
  4.             try
    7 j2 b/ C# |5 `4 X) K! y
  5.             {
    ; n& z& r5 r% k7 q( D( B4 t" z- ?
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    / B2 o6 S9 i% s3 u, x1 g
  7.                 // 需要注意的: : K6 Q- A7 X0 l* T1 Z
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 9 g9 R: ^# b- x6 `1 h
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    1 {7 U9 ?4 N, [+ L
  10.                 // webclient.Headers.Add("Cookie", cookie);
    6 b  K2 ?( d+ S  T
  11.                 //这样可能需要一些重载方法。根据需要写就可以了$ Z- n# e( t4 U1 N- y) m
  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)");/ a- ^& C5 O/ x4 n
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    * |$ r6 _% q  d2 o8 P; {' o
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    9 w2 k' J  N# c# d' O& V! U) s8 T1 l
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    & e: T5 m, c$ o2 m
  16.                 //如果服务器要验证用户名,密码 0 b& C( \$ P. v0 I6 w0 F" O
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 8 C2 S5 z% b9 e% N8 ~
  18.                 //myWebClient.Credentials = mycred;
    # j% _$ u5 k  _4 W
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) , n# s+ o, Z: P
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);; O( K* ?4 w# h  C# \, u+ u5 K% }
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    : c2 X$ C7 G% M: v4 {+ Z

  22. / d8 F) J0 Z5 e! T
  23.                 //获取网页字符编码描述信息
    / j) c8 H: D0 M& \& c+ l  y/ ]
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    0 G% l" }5 X$ B" X$ s
  25.                 string webCharSet = charSetMatch.Groups[2].Value;: R! d0 a0 N. x5 Z  |4 z- @% r
  26.                 if (charSet == null || charSet == "")
      F+ v( Q1 y4 D, @4 u; j
  27.                     charSet = webCharSet;
    % `" w, p1 s- d: U9 K6 P  b: }
  28.                 if (charSet.Length > 0)( p/ V, m/ o. v. k/ `5 e
  29.                 {
    0 p( {# T! d+ o; K2 D  \
  30.                     charSet = charSet.Replace(""", "");
    . f( i) W0 }+ [% A
  31.                 }
    / @2 Q7 D/ r3 e4 [: H* @
  32.                 if (UseUTF8CharSet)
    9 X2 y8 q% j, m1 _8 ?0 j4 ^5 [/ j
  33.                 {
    ' r' c6 Q. f  U7 c! i4 \
  34.                     if (charSet == null || charSet.Length == 0)
    & c0 B8 n$ x7 O  l6 m' S6 r& e
  35.                     {, L1 U6 c& S) G- z$ k' ]
  36.                         charSet = "utf-8";
    : e3 x+ S6 `3 e8 Z
  37.                     }
    * c" J7 @! ]8 F. Q  B5 ^5 O
  38.                 }$ ^8 ~  P7 q9 E7 o
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 x4 i0 p2 }! |. s, @1 G! Z
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ! V% g7 z' }% V. p! W

  41. 0 B  R# w7 Z- H- D( G3 G# K6 y5 u8 ]& A9 u
  42.             }0 d! Q- E0 g; Z8 B
  43.             catch (Exception)
    6 D+ z+ H3 h% |1 h. N; ^2 J4 w
  44.             {- q* F5 T& o3 ~$ m% d
  45.                 strWebData = "error";
    8 Z$ T4 m! U1 P" `5 _2 b; y- X
  46.             }
    ; p+ k' N: U: ^3 f

  47. " X+ o7 J& V3 l- v2 c0 P  W
  48.             return strWebData;  _# G  B3 [% v7 ]5 R1 F
  49.         }
复制代码
" |3 u5 `3 n; n3 e# X6 a9 u

) g- p5 \3 i4 q: g+ q2 m
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-16 03:03 , Processed in 0.054486 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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