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, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理Proxy4Free独家住宅IP池❤️免费测试联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10008|回复: 7

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

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接5 N% e* d& k, W2 I* _
  2.         public static List<string> GetAllHref(string url)+ U. U" l( V( @$ _) Q& K$ \! b
  3.         {2 i* ^* v* C1 q; g+ a
  4.             List<string> allHref = new List<string>();
    $ N3 S: S/ L9 L' C: _/ Z
  5.             try
    ( G' v4 g" O* m( d. u1 h- v( D5 a
  6.             {
    ( K7 p8 W+ _, V+ ~3 Q1 S0 m( n
  7.                 string strhtml = soso.getHtml(url, "", true);% s3 W0 r2 n8 S" K% G
  8.                 if (strhtml != "error")
    ) B: o" t$ P/ O6 ]
  9.                 {
    - l+ R) s, {; w# U0 L
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");2 p& A% U/ p1 @( H0 P- r
  11.                     MatchCollection mc = reg.Matches(strhtml);8 v1 S2 ^* Y/ P* V: m1 _1 G
  12.                     foreach (Match m in mc)
    " G5 u) \. z" L6 b1 q6 L4 {
  13.                     {
    / t: B$ r- c; i
  14.                         Uri uri = new Uri(url);( e0 r4 Y' K3 ]8 w+ d
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);1 U( }' _& X* N" a
  16.                         string fullUrl = "";
      x5 l! p) A/ g2 c
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    9 ]# |: M* o: _! n
  18.                         {$ J- T: c  p' @3 r. [3 ?
  19.                             fullUrl = m.Groups["url"].Value;
    $ N5 }1 e) c: h9 v3 n
  20.                         }
    4 f. b+ p: I, o( o
  21.                         else
    + Q7 J* G! L+ _- [) W8 W* X
  22.                         {- F. E/ A: o5 P( i. [# @1 N
  23.                             fullUrl = thisUri.ToString();) D% W6 u# y$ `6 C: }/ l$ @; x
  24.                         }
    % k( {, i4 H# I9 n/ _
  25.                         allHref.Add(fullUrl);
      e+ Q8 s  ?8 N: M
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    2 Q% `0 ?! ~' l  N6 S
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);, t* k% r* I: _% N
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    $ J8 ?  G  v4 h2 R2 {" Y" [2 J% {* B% Q
  29.                         //Console.WriteLine("…………………………………………");
    & r5 \8 R3 E& w4 T0 F; l! ~/ V+ b' Q0 f
  30.                     }& Z5 `% U. ?; k! H1 y
  31.                 }
    $ I) G- ~7 z( ~) s( F0 V  ^& m
  32.             }4 P8 A5 _7 c' y: Z
  33.             catch (Exception ex)( O( y' M+ k& |
  34.             { }
    7 I8 a. \' J1 \3 t
  35.             return allHref;; d% K; m5 B$ e; v& C
  36.         }
    ( M- T" F; n; ~/ d* G. O2 q, C
  37.         #endregion
复制代码
* @. Z# p. S, ~' \) M' _/ C

6 e& N, n7 K6 H4 m
  1. 0 s  U' [5 F; f  G

  2. 9 }* l% l. {( |$ S3 N$ d
  3. & s/ ^6 m! e) c, w1 S6 ^* T7 ^
  4. #region 数据去重
    9 A/ M3 }1 O9 D! G  k' v6 J
  5.         /// <summary>
    % g4 G! @6 m& o3 t3 B& K; r
  6.         /// List<string>去重
    - m- `/ d: x+ P4 {* N$ A
  7.         /// </summary>/ `6 M$ |2 ]( G
  8.         /// <param name="list"></param>0 G8 s  J& h# E& G
  9.         /// <returns></returns>
    / p( Q( M4 K& Z/ x9 i8 p" w
  10.         public static List<string> getUnqueList(List<string> list)
    & D" u1 V0 x0 s# C  \4 Z0 F
  11.         {
    2 o, B5 n5 l$ a+ U
  12.             List<string> list1 = new List<string>();$ A+ i  u4 r( S4 M3 x- v) {
  13.             Hashtable hash = new Hashtable();* q. K! w+ w' W6 Y& v6 @
  14.             foreach (string s in list)/ |5 ]- f2 D2 _+ L
  15.             {
    6 n3 Y# S" I, G' h3 X
  16.                 if (!hash.ContainsKey(s))7 X, k. t% x1 B1 m; l
  17.                 {9 b/ z* {; [7 g* Q; g2 _
  18.                     hash.Add(s, s);& G5 ?1 L; i$ s; f7 S8 _) i
  19.                     list1.Add(s);7 E# {" z# p0 h6 Q
  20.                 }
    $ M" V, u; D, \. X  U
  21.             }
    9 q2 M+ p+ _& P7 t4 M
  22.             hash.Clear();
    ' L! i9 V" Q( ?; j* W7 O
  23.             hash = null;
    / E4 Z5 |  y3 t0 i3 D; z3 o
  24.             return list1;
    . m% N' F+ G$ N1 f7 g: w
  25.         }
    . g/ F9 {! y- K! ^' `' S8 z
  26.         #endregion
复制代码

( N4 M4 ^) x* M1 C6 `4 g& m' k( d

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
& e  I" x- M# {! U1 i7 R8 A# I
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20, ]* ~# k4 i: Q" |8 F! J
十分感谢!!!非常感谢!!

! R' [" ^6 i- g* r1 M缺少一个gethtml,用下面这个:
$ U$ S/ {6 V1 h. ^* s" O
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 . j% V5 ~8 {- P' a
  2.         {
    % ]( z& i* u- A. ~* \
  3.             string strWebData = "error";
    % w# |9 [  A; B+ G: I5 F, w
  4.             try. N- c' I  y) G
  5.             {% {  F, X  Q1 ^; d
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    7 I) N& C! B' k6 [  k
  7.                 // 需要注意的:
    " c  P6 _2 f' ?, B# W1 c
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 + |( m! `6 m' ?. Z
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    : B% @1 ?1 N" T/ N
  10.                 // webclient.Headers.Add("Cookie", cookie);
    4 F$ g5 Q( m5 i1 d
  11.                 //这样可能需要一些重载方法。根据需要写就可以了( l" u: }5 t$ `  i$ |. f: }1 A+ N
  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)");8 e! A6 j+ e. K3 v
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");$ S3 J3 h3 y) X- b% E7 w& ^/ Y
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 3 W/ Z) N; {1 x1 s( n8 x/ s
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;) X1 t6 h  p+ j- E' t5 F* C
  16.                 //如果服务器要验证用户名,密码 ( D( l: L' v6 F3 ]3 ]0 J' w
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 6 ^" {: G9 E' \. ~6 `' L# U9 p
  18.                 //myWebClient.Credentials = mycred;
    / x: y+ E& P* V1 _; B/ j- P$ n
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) + {& g2 {) j2 l; ~: d% v6 \
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);$ C; V& K) {  J6 q7 h" _8 |% w
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    5 |7 g1 F- o! G3 f
  22. 3 O, l% b2 H& h6 A% H! Y: s
  23.                 //获取网页字符编码描述信息
    9 n: `; c  P" h$ t  _
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    0 e: q2 R& [1 k) z- K
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    , ~% e- t0 K0 v6 R9 s" m2 o
  26.                 if (charSet == null || charSet == "")
    8 F# h6 [2 @+ N/ U  D
  27.                     charSet = webCharSet;4 v- v( Z0 o, i, X! {# Y! z
  28.                 if (charSet.Length > 0)
    ) E2 R3 y2 o. b+ a- v3 S. W( [8 ?
  29.                 {
    4 N8 y$ {* G" V9 _& S" W% L" w
  30.                     charSet = charSet.Replace(""", "");6 Y- K! l9 F" ]( _: k4 q
  31.                 }0 r4 y1 u5 ]6 |/ P, r
  32.                 if (UseUTF8CharSet)
    9 Z* S) A% ^) k' X: I
  33.                 {
    $ g2 X# r1 M& G3 f& g. ~
  34.                     if (charSet == null || charSet.Length == 0)  j( H# C- E6 u$ O. e- E
  35.                     {1 Z1 M! X$ B' Z$ v' D& |  J; z
  36.                         charSet = "utf-8";
    , B" J& H2 G1 L+ A$ ?
  37.                     }6 W! E" c: p% z8 ]; I
  38.                 }
    / o( d" E; D: \5 b/ b& ^4 w* |7 S
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    1 w" ?2 l2 K0 H5 z1 P
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);  v& ~+ U' v( [6 M; {9 z# `& H. P" E

  41. # N: P  z. A6 G2 O/ U, i
  42.             }; `2 H( r: p$ K& v& t7 D. c
  43.             catch (Exception)& z& r: W. x# {5 N. O3 ]+ @
  44.             {4 ~6 ^# e& _& X0 V$ e- m
  45.                 strWebData = "error";3 m& n; }0 A- G6 Y: f; y$ U
  46.             }' U: d& @5 p( r" E

  47. 4 u" ^0 X/ Y; D0 x
  48.             return strWebData;5 d" m( d6 {) x; r9 g
  49.         }
复制代码
- R. G, i9 q1 _- p9 {. p9 J
: r% Q* k, w; p. F! G7 J
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-1 19:08 , Processed in 0.052693 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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