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加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多高品质·稳定高速纯净IP FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 
海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9906|回复: 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 抓取全站链接4 E6 W- ~* Y* q; m- h3 R, _
  2.         public static List<string> GetAllHref(string url)
    % u4 k- r3 D& R  `( H
  3.         {
    - H  i6 A* t# u& Z
  4.             List<string> allHref = new List<string>();
    ) h. O: Q1 _8 l- d; k
  5.             try
    ; X8 Q4 t9 w3 T" \0 v
  6.             {: Y! T$ b& v) U8 `# G/ y* X
  7.                 string strhtml = soso.getHtml(url, "", true);
      `! O; j( z4 I. G3 O' n
  8.                 if (strhtml != "error")* {9 t4 V6 ^4 C9 H* R
  9.                 {
    ) k+ s- x" [% O+ F& n$ k. x
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    & T5 k! C4 F* C; n( q% K4 l
  11.                     MatchCollection mc = reg.Matches(strhtml);( \( Y4 V; l$ n/ N6 ]7 y/ D3 B' o
  12.                     foreach (Match m in mc)
    8 l+ C, y' _0 Q; U1 ~4 B
  13.                     {
    5 [8 f9 N$ ]5 ~$ X# J! `* v
  14.                         Uri uri = new Uri(url);, |# L1 R/ x* z: J. J# r  m
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);4 d' t0 v$ M0 ~' N) o3 \
  16.                         string fullUrl = "";8 P8 U- x; V2 s) B
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    7 A' G  V/ ?1 H8 c
  18.                         {7 J# w( _) c9 Y- z
  19.                             fullUrl = m.Groups["url"].Value;
    * K' A/ o6 c$ F
  20.                         }# y0 L) x/ W/ g3 n5 `& h# L0 {
  21.                         else) J4 o/ u+ ]: T& m* b  ^& s4 s
  22.                         {7 i) z% ]8 O3 n0 ?. a5 t
  23.                             fullUrl = thisUri.ToString();
    6 Y! l) Y: t+ [6 }! \
  24.                         }
    0 T* [- m7 Y1 t# F
  25.                         allHref.Add(fullUrl);
    # T6 t! t( L1 w- J
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    . H/ }. W7 Z3 o7 s6 j
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    5 h$ l, T3 m& \7 I; T2 b
  28.                         //Console.WriteLine("补全链接:" + fullUrl);: M" C) s2 b# K1 b
  29.                         //Console.WriteLine("…………………………………………");# F' O9 g; {& T- i+ Q' R
  30.                     }
    4 q- E0 N9 @; H% m
  31.                 }9 L* i6 }4 s) M8 l
  32.             }
    1 S5 H/ Q& x6 e/ D! t: f
  33.             catch (Exception ex)
    ) j. z5 V9 \; N1 y  o# _1 F
  34.             { }) ?/ ~" a, }0 }% u; Q$ c5 m
  35.             return allHref;
    0 f! y  B) S% ?" p8 g
  36.         }
    # R& ~( x! T0 t8 h8 a' D
  37.         #endregion
复制代码

# B' E% Y7 b5 d  u4 x
1 m5 y6 Z7 i) W
  1. " i# O6 L- y) }

  2. * O7 U1 E* \( X; T
  3. , F4 w+ ~# Y2 [% N  s5 F2 S
  4. #region 数据去重
    - ?# a6 l6 K0 O) Y1 d  n
  5.         /// <summary>. S5 Q  Y3 N! K* u
  6.         /// List<string>去重& X/ |; `! h3 x$ z8 c
  7.         /// </summary>( V! [4 }& ~# @7 u$ U3 c
  8.         /// <param name="list"></param>
    6 ^& t: w" g9 G. D! [
  9.         /// <returns></returns>+ K) _9 K6 ^4 G& E, J, P  i) i
  10.         public static List<string> getUnqueList(List<string> list)9 K- B8 X. O5 Z0 f2 B. ^
  11.         {- ]  W" r5 f" y3 Q9 |9 w5 Y! {7 R4 T5 x
  12.             List<string> list1 = new List<string>();) m9 j5 b" l: `: ]0 F/ m4 b
  13.             Hashtable hash = new Hashtable();
    % s2 q8 x7 u! L; c
  14.             foreach (string s in list)* N) |. N3 F' _' a4 u
  15.             {
    $ Y7 j3 X+ h4 O' G) z6 N
  16.                 if (!hash.ContainsKey(s))
    3 k. [1 E! u: b/ B8 h# ~
  17.                 {4 ]/ n, w" O; c/ k  |/ C0 J
  18.                     hash.Add(s, s);
    9 ~8 c6 `7 _' n5 H5 I
  19.                     list1.Add(s);
    / l) {- T7 a* W/ U1 G1 j9 P
  20.                 }
    # h1 _' P, {- @$ d
  21.             }
    + g2 B, u: `- k# U
  22.             hash.Clear();
    / `3 x0 w# }; y$ H1 Z0 m* H0 g
  23.             hash = null;
    - i4 T) f9 b. [
  24.             return list1;
    0 n- k0 U3 S1 E$ R4 S$ {  k
  25.         }
    % t; Y/ G7 t$ y: o9 ^
  26.         #endregion
复制代码

8 N4 @% B4 G- H* N) y" |! d; Q  a5 O6 V8 W% S8 A' n8 Z

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
( I) h# E3 j! b' r: }5 C: i) F' V& X
十分感谢!!!非常感谢!!

点评

缺少一个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
5 }  d# e- n1 Q) n; _十分感谢!!!非常感谢!!
; i* G0 u+ Z# f% a2 X7 d
缺少一个gethtml,用下面这个:0 Q" W" J4 g4 n, _3 m  _8 u/ V* ?
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 5 u6 ]: H/ m# ~
  2.         {
    # x/ t# h# w7 b  g
  3.             string strWebData = "error";
    - c  v8 }2 w, b* E+ p
  4.             try6 \& w$ d5 N% t0 d% I  z
  5.             {
      d% s  P# m. u( e0 N  p
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 3 p3 Z8 T" ~1 u( @' j
  7.                 // 需要注意的: ) Q9 Z  u7 Y3 J: l0 m) v2 h& ~( h
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 # {5 Z6 N* ]+ W4 u$ x1 s9 k
  9.                 //这是就要具体问题具体分析比如在头部加入cookie & a# Q% x: S' {$ |; s3 R0 v
  10.                 // webclient.Headers.Add("Cookie", cookie);
    5 y  c+ y; n; K0 K
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ! ^! q' k2 S1 ?3 a8 Y; u. L
  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 P: K* E6 [7 ]- A! K4 C
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    : [1 ~3 p( m0 m! \! t
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    . G7 M3 a4 W  j0 h8 l
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;* m5 T0 V- y! {3 Z
  16.                 //如果服务器要验证用户名,密码 % e4 P: z) T8 m4 ^
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
      `5 p! T( I- M
  18.                 //myWebClient.Credentials = mycred;
    4 f- Z- i! G3 X
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    + p% b6 o9 I+ s5 h
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    7 }9 s/ f( A# s2 o) X
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    . H, R1 h) \/ Q' _7 |; S+ E2 n

  22. $ m5 a$ Z) z. H; K
  23.                 //获取网页字符编码描述信息 ) }# c) Q: {8 J2 o# h( |
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);8 ?+ R5 k/ l( p" [  B
  25.                 string webCharSet = charSetMatch.Groups[2].Value;; ~3 `3 j* q9 I2 n* d/ f
  26.                 if (charSet == null || charSet == "")1 Y! m& E6 G) B* |: {! o. o6 t
  27.                     charSet = webCharSet;
    & }9 [% u: p5 t* I, e( ?5 |
  28.                 if (charSet.Length > 0)
    / g7 R3 s2 {- X9 D
  29.                 {8 l  M3 @3 n$ k! R
  30.                     charSet = charSet.Replace(""", "");
      c9 P& o1 \' Z' B( m
  31.                 }) N( }2 Z* s4 u: l
  32.                 if (UseUTF8CharSet)) F# U0 F  a; x( F( [' k8 k
  33.                 {
    & U2 J4 r' z7 [& w! @
  34.                     if (charSet == null || charSet.Length == 0)
      [  _3 X  x% @  _& v' P' V
  35.                     {/ Z+ W, P  ]4 ]' E
  36.                         charSet = "utf-8";
    ; {8 t  O3 X; L
  37.                     }
    5 P/ s. ^, l- w& ?& J5 b
  38.                 }4 X4 j8 L. c0 U4 R4 ^1 v
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    8 l/ S, d" M4 B6 Z: h2 C! z' o1 T
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);! K$ m6 ]% R: N8 Q- i* {( ?

  41. * B7 F# |7 Q7 [7 ^( N+ u, n
  42.             }
    ' X% h3 _2 U& D0 S# E8 C
  43.             catch (Exception)
      c" u1 i6 y8 ]
  44.             {7 F; t% ?- a# F
  45.                 strWebData = "error";
    3 W! \: I; P- C8 G/ |  {
  46.             }
    , O. ?2 H4 Q6 u/ R2 ^$ {  [, I
  47. + W* a& d* }9 x2 [% B
  48.             return strWebData;
    ; P: r! e# H8 h8 p
  49.         }
复制代码
! |+ @$ \% K5 C4 |
' a5 l% n( X# }- ]9 _7 D; f0 r, B
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-23 04:20 , Processed in 0.053062 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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