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审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理FB企业户海外户,授信户,TK加白户Proxy4Free独家住宅IP池❤️免费测试
联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 10000|回复: 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 抓取全站链接
    # z8 H) z" F. D: H# Z) C
  2.         public static List<string> GetAllHref(string url)
    0 V' E4 S9 s, F& s' k
  3.         {
    - k$ P. N+ r8 F! p3 F# n' S
  4.             List<string> allHref = new List<string>();
    * |5 I9 |3 @/ X" \
  5.             try
      R; D4 E/ G4 y: t! R, V2 e
  6.             {
    ) b, K* z5 E# _5 `* `
  7.                 string strhtml = soso.getHtml(url, "", true);
    ' L0 [( ?" |7 r0 a0 L- g. ^
  8.                 if (strhtml != "error"), W: B# j; r# V5 g; P2 \! h% d
  9.                 {
    , g+ E0 Q4 c3 j; h3 N* Z" G0 ]
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    + t7 w- O4 K$ \, r* J1 Y
  11.                     MatchCollection mc = reg.Matches(strhtml);* Z0 F( {" E) Y# j3 T
  12.                     foreach (Match m in mc)+ j) z; Z' P* p' g: i8 N
  13.                     {
    2 T5 V$ t+ |( p+ |- }: Q1 Q, B
  14.                         Uri uri = new Uri(url);6 S6 p" S* g" r' Z9 O
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);8 I4 S; O* c* O4 {
  16.                         string fullUrl = "";+ P6 X$ @( V' v5 u
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ) t: J+ E' |2 @0 k8 c! W( A6 ^! f: W
  18.                         {8 i8 D1 e' S- c9 `! O& c
  19.                             fullUrl = m.Groups["url"].Value;
    4 n9 |, _- @4 L2 b& p! ?! R
  20.                         }& {4 a( t9 ~0 J7 e9 L3 {" j) U
  21.                         else
    0 C  Q+ [$ _5 ]' J2 p; \
  22.                         {$ I% ]4 Y7 k2 c6 e
  23.                             fullUrl = thisUri.ToString();
    / K* @& B6 \$ f* C
  24.                         }# D8 B7 n; b, g
  25.                         allHref.Add(fullUrl);8 b4 E5 o, N0 Z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);1 Z+ @) m% J) J9 F) _7 o5 M9 ~
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    0 l8 v8 L( a! r1 h* e5 P
  28.                         //Console.WriteLine("补全链接:" + fullUrl);" d% i# O0 D4 l( ]- k7 _1 J
  29.                         //Console.WriteLine("…………………………………………");! Q8 w& b/ C+ ~; Q/ n! P
  30.                     }
    # X! U% e; x& l7 W
  31.                 }+ F( l& K. E' W2 @
  32.             }
    4 `7 X5 _4 ]0 w7 d' @& s0 f, v+ A
  33.             catch (Exception ex)2 H1 q( S& y& @% V
  34.             { }
    7 V+ x8 O0 b9 l1 `& w
  35.             return allHref;7 C1 C7 P: r( x% u" G3 s+ h( o
  36.         }
    1 N. t3 ^. p7 p2 v
  37.         #endregion
复制代码
2 w9 ~7 t" V1 z1 W) `

$ u$ p0 G( ]- ?  C( M7 B, M

  1. * H& U/ |5 l7 a" O$ W5 E
  2. ( {; g1 W1 J2 A3 b4 B

  3. 1 ^4 b* \! }# N( [
  4. #region 数据去重2 r! o" S; @  O
  5.         /// <summary>
    , ~1 m+ u- C; q3 ^, B
  6.         /// List<string>去重/ s! ^) m% n( \; \- b& Z9 d4 w
  7.         /// </summary>% u  ?" E% r6 v
  8.         /// <param name="list"></param>- O+ F8 t. m- D8 v
  9.         /// <returns></returns>! n; F5 h9 l. Z, O& _! ]3 Z8 l
  10.         public static List<string> getUnqueList(List<string> list)6 u  D; f# h9 G0 k7 g1 f
  11.         {' _$ {) z& m8 Q: b
  12.             List<string> list1 = new List<string>();
    7 a: r4 [& t( T! {$ u
  13.             Hashtable hash = new Hashtable();$ Y- i5 v" r/ L" z  i- U
  14.             foreach (string s in list)
    - C( j& j) _+ i; Z
  15.             {
    " o; D, i- }( q8 {" M! Q
  16.                 if (!hash.ContainsKey(s))' M1 g# Z9 @( Z4 w- T3 r2 U. B. l7 p/ s
  17.                 {
    ' l* z! K; X% `7 S
  18.                     hash.Add(s, s);
    ! h7 ?* h. l4 t( k( f
  19.                     list1.Add(s);$ |+ U" l; `0 _) L$ M$ Z
  20.                 }
    + N1 T8 G; `* ?3 r  D# R
  21.             }
    , P! o, {1 H$ W& F9 W
  22.             hash.Clear();
    - R# {. P8 |: S2 e! r; x
  23.             hash = null;
    6 [3 q0 v1 ?# ?
  24.             return list1;$ e# M0 a/ l5 c% }7 n* F
  25.         }
    3 T& u1 h1 x5 ?! ?* M7 u- J/ q
  26.         #endregion
复制代码

% y: w& X0 @7 E/ C+ p" n/ M) z7 K( a& ]" P2 A

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
+ ^0 Z* |7 e! b) u  w' C
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:206 K# a4 h2 d  r2 C" [/ D
十分感谢!!!非常感谢!!
# C' A) @3 {$ {5 k2 k
缺少一个gethtml,用下面这个:
. ~0 w& c' _2 m2 S7 n0 M
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    ! ~1 g1 v* J# I0 d5 E
  2.         {& v$ x7 n/ s5 K& x7 W6 b( E
  3.             string strWebData = "error";
    9 ]8 v; F/ {) T5 Q+ n" d
  4.             try8 t* p! ]- m- ^' A5 V
  5.             {
    $ v3 y' @) \8 A- S; m
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 9 N( s. K! V2 D4 h" _9 y
  7.                 // 需要注意的:
    & Y  K- ]5 D5 N; H" c* j! W
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 & W  S: A& K! y4 o4 W; v- I$ E
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ; {- X8 W. l$ o$ I! f+ u2 O& b
  10.                 // webclient.Headers.Add("Cookie", cookie); ! h; H9 C" v" a: v
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    - W) ^5 N8 {4 R: B7 r! Z2 i. s$ x
  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)");! ?/ z& N2 @$ x# M
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");' @! e/ i* G' R* h. s$ d; f
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 1 O: m$ Z2 p+ X9 E. U% X
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;" j: q  V; {+ e/ X: L" T: O
  16.                 //如果服务器要验证用户名,密码
    6 r% J0 \5 t. a6 Z$ B
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); * g+ Q. z8 r" x( y3 c4 S
  18.                 //myWebClient.Credentials = mycred; % p% K" I& L3 }6 S$ J
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) : J1 B1 }, U4 B- f% M* _
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    * C3 X) r: J$ P% D! y
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
      F$ P* @5 L6 k) E! t  I2 G
  22. $ n; t# @4 y, j8 |- M
  23.                 //获取网页字符编码描述信息
    # ]9 w3 c( N. ]: a
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    & g  K/ p0 Q' @9 e. F4 V' A* ]
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ) X/ ~* k1 }' x( d* h
  26.                 if (charSet == null || charSet == "")
    : H1 f  e: y/ \
  27.                     charSet = webCharSet;" m% A8 Y6 I% Z2 Z/ T) C  D/ Y
  28.                 if (charSet.Length > 0)3 t" V- _& E3 w) n3 P; a/ b
  29.                 {
    9 P' N9 w1 |  C8 t
  30.                     charSet = charSet.Replace(""", "");
    : s( Z) d' g( A' |8 K: I
  31.                 }/ ~4 @& Z) n6 C  `% H
  32.                 if (UseUTF8CharSet)
    * z) h4 k; r  y% D7 `: A
  33.                 {
    4 v9 p: P7 b: H/ g' j0 T9 J
  34.                     if (charSet == null || charSet.Length == 0), t9 N9 l& F3 i" N( @! _) i( U
  35.                     {6 S) j* P7 W# N4 F0 Y- Q
  36.                         charSet = "utf-8";
    ) ]: Z5 l' Z* _$ J8 j4 D- q
  37.                     }$ N. h, z: n6 P
  38.                 }$ B  Y( {& H. u' K
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)$ z2 S& x. L- g7 y" R1 X; ]& G
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    9 _3 A) m0 E8 a4 K% C1 C

  41. 6 l% v. `% u/ Y
  42.             }: ~) r( s6 t* }' P# \+ H/ ~1 M
  43.             catch (Exception)
    9 t7 D4 y0 b% C  V  O( @5 p9 d
  44.             {
    , s$ a& i. D- e6 H$ \
  45.                 strWebData = "error";) @5 p3 o! w$ u7 a
  46.             }0 [5 S9 V% V( `: A! h( ^! N) Q7 `2 H3 g
  47.   j( K' Q7 c3 m* k+ j2 U( }
  48.             return strWebData;; z' C, g4 t# ~7 ?; S
  49.         }
复制代码

9 ^# ~6 s. m) N: |& \& J: M( r
) O; H+ S  D" ?3 P% e+ y
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-29 16:00 , Processed in 0.052414 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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