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虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量高品质·稳定高速纯净IP
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9917|回复: 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 抓取全站链接6 i2 o# k8 A' o6 _4 |
  2.         public static List<string> GetAllHref(string url)
    " k5 C3 z1 u$ i& g
  3.         {) P% e/ j$ y+ {6 ]+ s
  4.             List<string> allHref = new List<string>();/ e# w  _' \: z
  5.             try; g1 V3 ^  l. T2 h
  6.             {! U7 a" @7 L5 e2 M
  7.                 string strhtml = soso.getHtml(url, "", true);
    - L1 @" l* G; {- t3 \$ \
  8.                 if (strhtml != "error")
    & S$ s( R  j7 I( |6 Z' |, a
  9.                 {. a! t6 c1 T! _/ \: M" B! g
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ) I1 i  I" n( Z( h
  11.                     MatchCollection mc = reg.Matches(strhtml);
    9 d& b& I+ r$ V7 p. M
  12.                     foreach (Match m in mc)- ?7 X, Z) p, F, d
  13.                     {
    0 l8 _( Q; K, H. j$ s2 J2 M
  14.                         Uri uri = new Uri(url);
    - q/ h$ V* [% C, _0 h. W8 k
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);$ t/ Z9 m. s2 j& `& d$ N2 k! G$ c
  16.                         string fullUrl = "";
    / J1 j2 g' G0 a. y$ E1 w, |
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ; D: s; B2 N9 }& z- p: v! `
  18.                         {
    8 [* {' @/ ]7 {7 p. s% }2 ~
  19.                             fullUrl = m.Groups["url"].Value;0 M" O, `* C4 \& P& r, h8 p1 J, ?
  20.                         }
    8 y5 T' x6 }: F) @- C! X# y
  21.                         else
    , K7 j$ p- l1 N4 P3 n3 e; `$ A
  22.                         {$ F2 l$ D+ ?( q* f2 c
  23.                             fullUrl = thisUri.ToString();
    6 ^$ S8 y: l6 q. j2 q
  24.                         }
    4 y& [8 q$ r% u8 @4 u( c; d! i4 z* ^
  25.                         allHref.Add(fullUrl);
    0 n- ?, T- v; s# Z! B+ W
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);. g( I+ ]7 ^4 ]5 |! d4 W
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    & m+ L! w  k% E2 n! ]
  28.                         //Console.WriteLine("补全链接:" + fullUrl);/ v4 A+ }# d& m  k  O7 f
  29.                         //Console.WriteLine("…………………………………………");* S. _; U' w8 V4 |$ T" V* j
  30.                     }0 k/ g8 m/ y* V% R
  31.                 }
    ( V) w+ |4 v" F/ U# [2 ^
  32.             }. O' J# o( r/ m! P# ]) G+ f
  33.             catch (Exception ex)
    $ T; p2 m7 R! j- M: s! {) ~* w
  34.             { }
    % v4 ~1 F0 A; u0 y  J% B
  35.             return allHref;* S" G; Z. D, A+ b2 p  n; w
  36.         }
    1 Z1 ?1 d; I8 x, L  E  |5 v
  37.         #endregion
复制代码

7 P; p, A  c7 T5 w* J( M4 O( o/ k1 [. i6 M7 i& x
  1. ' j# r1 P* `) B8 p
  2. 9 t* k5 Y" r3 e4 t8 ]8 R8 k6 U  F
  3. 2 r1 o; F* M, ]6 p1 |
  4. #region 数据去重; d2 J& Q$ u% u7 G
  5.         /// <summary>
    8 N! N) w* }2 \: k5 g
  6.         /// List<string>去重+ _! t4 q- j% T% ^; Q: f' `* ]( n
  7.         /// </summary>+ v" E8 c# |) L' }8 k
  8.         /// <param name="list"></param>
    & F) g4 S4 o5 V0 m* Q/ N2 N2 d
  9.         /// <returns></returns>
    . i2 l$ L6 s- ]  z/ {! l$ ~3 h
  10.         public static List<string> getUnqueList(List<string> list)
    + e) X& W1 G; k4 O/ O5 ~
  11.         {& f( f2 J( S+ x. @7 L7 r& g  E7 `
  12.             List<string> list1 = new List<string>();7 d) W! C/ K) r2 i/ \. M) D
  13.             Hashtable hash = new Hashtable();
    & ~+ d% b! n' c* P! P8 Y0 b5 u
  14.             foreach (string s in list)
      x- Z* W" n! R& V5 b( f
  15.             {
    . r) y$ Q9 ]$ E* z( J3 x
  16.                 if (!hash.ContainsKey(s))
    6 u- w9 D9 w" d4 P" v' _8 f
  17.                 {
    # k- U, X8 t/ o$ d3 s+ D
  18.                     hash.Add(s, s);9 a0 ^! Y% y4 ~/ j/ G9 {
  19.                     list1.Add(s);
    + Y+ |; C$ I% K% }" P
  20.                 }
    , g+ [/ L; b4 [7 B6 h4 c
  21.             }
    ( A' i4 H! \! Y- ^) B6 R% ^6 W
  22.             hash.Clear();
      J: X0 ]) G, b$ s+ \' h
  23.             hash = null;
    % t& y. P/ R9 ]9 f! l4 @8 A' |7 J
  24.             return list1;
    ! Q* N: ~8 c9 {& a
  25.         }/ ^* ]8 \: H% {2 f! J( D. [% C
  26.         #endregion
复制代码
  Q" i* S+ d; c* G2 I9 q% D! u

( n5 B7 S# c) k# T

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
9 Q# M4 Q: K  C: s1 y! n
十分感谢!!!非常感谢!!

点评

缺少一个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
. L) m) H* n' h% q: x$ \十分感谢!!!非常感谢!!

+ M$ }% y* e, ^2 v* x! n缺少一个gethtml,用下面这个:7 x) U( o* e! x) t/ |  B0 ~
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 " h0 h' `% z& p/ o8 R5 u8 M
  2.         {2 S  `4 X6 \  c% g) c3 B+ }
  3.             string strWebData = "error";5 k5 i. V6 `: d& [  F7 j4 }, \
  4.             try
    ; u: h0 X0 m5 Z6 y9 y1 u$ L
  5.             {- p! W1 s7 X! O; D2 R" J: B7 g
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient , s' z& U" F1 h# b/ M: G! U
  7.                 // 需要注意的:
    3 B6 ~% e; P8 V& o5 d' u
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 % E' }& Y" ?# B) E: Z) Q
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ; H+ o, q9 o; Z. u. L; b
  10.                 // webclient.Headers.Add("Cookie", cookie);
    $ ~" f& ^- i0 |  l
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    # l0 s  k! E$ s
  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)");; C6 t: s. g- R( ?5 A
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");) ], H1 F  S. z5 {1 c
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 4 s- @6 H( f3 J) M2 y' B4 v
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    / I5 j- y: h4 U9 \7 M, V0 f
  16.                 //如果服务器要验证用户名,密码 * U% p5 E# O' c' k
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ! I' C! v4 j+ f% t. t. H' _1 J% x+ L
  18.                 //myWebClient.Credentials = mycred; ( b3 g' g! `3 a' z8 ^( s! U
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ) y  l1 o% K7 o
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);! G9 O. H9 ~9 H# ~6 k: F; F
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    : N8 J; `- d! T% _6 k7 R

  22. ; o5 n0 ?  G7 Q
  23.                 //获取网页字符编码描述信息 6 z- T  }; U5 ?# f2 d
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);* w* T) O& V1 z
  25.                 string webCharSet = charSetMatch.Groups[2].Value;7 i- i% [0 e. o% \
  26.                 if (charSet == null || charSet == ""), g# b4 f+ f: a5 Q) ], j6 q  k' C' f
  27.                     charSet = webCharSet;: R2 `. y2 Z( H7 j3 c! v4 X
  28.                 if (charSet.Length > 0)' V% e. b8 S1 L
  29.                 {3 e, R& y8 x8 V
  30.                     charSet = charSet.Replace(""", "");
    # ]3 M. t: e: m& K+ k
  31.                 }
    9 N3 b' T, x2 `3 y: S: `
  32.                 if (UseUTF8CharSet)% }! ?# M) a8 Y) }
  33.                 {# M% u" t: s5 h: z2 _
  34.                     if (charSet == null || charSet.Length == 0)
    1 k8 S$ \- P8 g6 O) l- m
  35.                     {4 B. ?8 V5 ?6 L* m) Z  `+ m
  36.                         charSet = "utf-8";! m( K# U8 e7 `! d8 n7 A
  37.                     }
    , g# T$ [+ @- P
  38.                 }
    % [: n9 ]: L  m  P6 ?3 J/ a+ q" ~
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)5 l) F' C8 o2 ~7 p) W
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ; k$ y$ e- k9 `* U

  41. 3 U( Z# f( J. m# A8 C) d0 H
  42.             }* a9 Z/ }5 O0 W; T) o2 t
  43.             catch (Exception)
    . G' G4 E1 ]" ]2 P/ `
  44.             {! L7 N: d0 p4 y+ C  B  E) c% G
  45.                 strWebData = "error";  ^, X, r; d; _' a& \# P
  46.             }" I/ Y) ?& E4 r3 m3 |
  47. 9 u6 X  U0 V$ K: ]& g
  48.             return strWebData;/ L- s! |  e/ M" k0 f' [, ^) z3 C
  49.         }
复制代码
" m7 Y% T5 _, j! i) K- K0 e$ v( Q

2 |3 Z+ K$ J* y* g. w- N7 I  s- s# q
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-29 13:51 , Processed in 0.053823 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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