AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Adsterra China
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡DuoPlus专注打造跨境电商云手机BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户IPCola原生住宅IP⚡️$1.8/条双ISPGoogle、Bing官方总代  联盟流量开户
FB企业户BM户账单户源头海外CL企业户源头PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心
FB虚拟卡⚡️消费越多返现越多虚拟卡 - Pay2.House【找量】BA独家Nutra单找量广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9488|回复: 7

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

[复制链接]

36

主题

173

广告币

259

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接$ q) Q$ [! Y5 k8 d1 c% [
  2.         public static List<string> GetAllHref(string url)1 {) w1 ~$ J" T9 j5 y
  3.         {& [; H' k9 ~* [! _
  4.             List<string> allHref = new List<string>();" n4 H- D- k8 D( T7 h
  5.             try; q8 s# d  r2 S/ `+ C$ Y
  6.             {  U: r5 w* C" L% V) r( l
  7.                 string strhtml = soso.getHtml(url, "", true);  @, h7 u0 }- ?  V% |5 S/ W' `" S0 _% g
  8.                 if (strhtml != "error")
    . R! C( o3 N& I4 \3 O1 r
  9.                 {
    3 c: E: Q7 ^! O! u
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    & F  V) c" b7 N
  11.                     MatchCollection mc = reg.Matches(strhtml);* G/ A7 {8 _4 z  g4 w7 x* d
  12.                     foreach (Match m in mc)
    , ^( N4 A/ I# ~2 c! J
  13.                     {% _1 L6 L$ f( _2 Z+ p# S; R
  14.                         Uri uri = new Uri(url);
    - [# U( J  y* w! g
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);  V- N; t" ~: O5 v4 j% @% x
  16.                         string fullUrl = "";# s* `2 C. b5 b$ j7 a) t
  17.                         if (m.Groups["url"].Value.StartsWith("http"))9 B: \1 D9 h9 F2 ?7 V/ P
  18.                         {- m# H4 b9 u  R9 a  z' e! V" s
  19.                             fullUrl = m.Groups["url"].Value;
    ! V# _6 |& x2 [" g- J5 V% \
  20.                         }
    2 ]1 ]7 Z' W: p7 y; Z, b
  21.                         else
    $ n1 b1 t; Y1 f5 ?- R
  22.                         {( y. G* e4 D0 ]
  23.                             fullUrl = thisUri.ToString();1 G, [* Z  K+ _* r# q2 O8 Z
  24.                         }6 t# p4 ]3 A$ C+ y1 N* n# u6 h. t
  25.                         allHref.Add(fullUrl);
    0 J8 `, V7 N5 g: g, `* I& H
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    , l+ x9 V  p% q9 F6 X4 Y
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);2 F- t$ o7 u0 j4 f" u) K# Q& I* W
  28.                         //Console.WriteLine("补全链接:" + fullUrl);" I' q, j: C" {8 t
  29.                         //Console.WriteLine("…………………………………………");
    * }( ^/ m9 |9 \: e
  30.                     }: T" z! [7 r& t1 _
  31.                 }
    2 |2 V$ X$ O3 {5 y8 O* k- h7 z
  32.             }
    6 G' z7 L! ?8 z9 X, ~" `
  33.             catch (Exception ex)
    0 Z9 r+ @0 f, A2 b2 n( {( P
  34.             { }
    ) L4 u  ?& i% l( F4 f- R; d& B
  35.             return allHref;
    9 \. o8 I/ I/ }5 E5 B
  36.         }
    6 F! K( c7 N  o% A
  37.         #endregion
复制代码
. K. s' R4 G3 T# {2 D
6 y0 P3 b) Z9 `2 g" ^7 d1 o

  1.   @* w3 c0 T6 A# \

  2. ; A0 w6 b. N6 _% m
  3. - ~" l" j1 O1 J7 I* j
  4. #region 数据去重: K7 f' N& @8 K0 j
  5.         /// <summary>6 _# b% C/ Q, u3 @
  6.         /// List<string>去重
    : u  U/ M) ]$ g* G. d% H8 a' \" Z8 h$ i
  7.         /// </summary>: r2 Z6 h/ p% C7 b- p* K
  8.         /// <param name="list"></param>
    " P  y' z- f% S/ y' N' E
  9.         /// <returns></returns>1 \4 O' P$ L5 R
  10.         public static List<string> getUnqueList(List<string> list)
    + i/ Z8 F. }9 E1 m7 |! M4 @
  11.         {
    9 J$ E( c# }0 m# p2 J- P6 e4 P% a3 \
  12.             List<string> list1 = new List<string>();
    8 k* S+ V, {1 a# [2 m9 C0 E
  13.             Hashtable hash = new Hashtable();& K/ a  T2 o+ B2 W! \
  14.             foreach (string s in list)$ X8 w- M% l) Q: m
  15.             {1 g7 B5 r6 _! {( G5 P5 G/ Q2 p
  16.                 if (!hash.ContainsKey(s))1 _# k, X& z' L7 X
  17.                 {
    ) L6 i) o/ w( p! e
  18.                     hash.Add(s, s);
    7 K9 g2 A4 D- Z# H% Q! j
  19.                     list1.Add(s);. ?* z( G* y$ D( d' i, R
  20.                 }& N: B: ^3 A3 z/ \, M4 E
  21.             }
    , x3 h9 f. _' n
  22.             hash.Clear();
    + M, h8 a1 D% |
  23.             hash = null;
    . S6 t2 T  u" t( G$ ]+ E
  24.             return list1;
    2 C# S5 J* k) S/ R3 x& Z
  25.         }
    ; E4 J% f& N9 p* A# T8 _+ X9 c; }
  26.         #endregion
复制代码

6 S9 o& t$ U# O; ?2 g8 M7 A/ K0 |. @

点评

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

使用道具 举报

36

主题

173

广告币

259

积分

初级会员

Rank: 2

积分
259
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层

$ ?2 S- c8 G" q$ w  D7 R, {十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:203 O* p1 E4 I. s; B3 G2 Q% y
十分感谢!!!非常感谢!!
5 }1 q% u) R- g3 ^+ [
缺少一个gethtml,用下面这个:9 W5 R6 z% N- X# d
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 2 X% J9 u! e# L: |% g& ^5 n
  2.         {$ u. s- x  l! ]) }
  3.             string strWebData = "error";1 Y, r* ~7 Z& _: H+ {, J- I: Z
  4.             try' N) `: o% }4 s3 W
  5.             {6 }/ V! D  g2 p2 o9 `1 G
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 6 k5 c- s  ^" W& F, I, d
  7.                 // 需要注意的:
    $ s9 l3 [2 p" w5 a. e) ^( K1 g
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 6 g: P- H2 n% S( Y$ l
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 2 d. Z. x& u' R+ m8 K2 J1 E
  10.                 // webclient.Headers.Add("Cookie", cookie); + C( t3 U1 Q2 c/ e
  11.                 //这样可能需要一些重载方法。根据需要写就可以了# E. O6 _5 u' {- J2 Q- j/ Y
  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)");
    + I( D" l8 H# B' m- t8 g
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");& Q+ h9 U" ?4 a, h
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    . y( [' q2 `0 O" T7 H% I0 B
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    / r- h2 @9 _  |/ S( M2 G0 k
  16.                 //如果服务器要验证用户名,密码
    9 F9 h# l% A; k8 h
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ( V- M1 Z2 X, u& W. [: `) K
  18.                 //myWebClient.Credentials = mycred; * }7 S/ ^0 f( ?/ }; \
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 0 g; y& e$ G/ u5 m
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);& X7 u6 e4 @5 I0 l
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);- m" p+ C  t* n  C$ [
  22. 8 h5 a( k$ i; v
  23.                 //获取网页字符编码描述信息
      ^1 I$ R6 [# s9 d% y" K* G& ?
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);& X$ P  R9 C2 @# t
  25.                 string webCharSet = charSetMatch.Groups[2].Value;! g3 ?" [5 D7 q* F
  26.                 if (charSet == null || charSet == "")
      a" }4 a' f) G; F) B! w! _" n2 P: \
  27.                     charSet = webCharSet;  a7 Q1 e/ ~/ J- u% U, N2 d$ _! o! F
  28.                 if (charSet.Length > 0)& o% w! r6 b1 X/ c- e- ^/ B
  29.                 {2 z; k+ _; Y% ]8 [, i# W$ u( E( N
  30.                     charSet = charSet.Replace(""", "");
    5 i' \4 i$ d9 \  h0 F
  31.                 }% G( x  u( O1 C* d1 b- p
  32.                 if (UseUTF8CharSet)
    4 \% q) o# e3 @4 g
  33.                 {
    * G6 X$ Q5 |+ V
  34.                     if (charSet == null || charSet.Length == 0)
    + X7 R  V( y. [* M5 t
  35.                     {
    , B) x3 ?* v$ U2 E! Z
  36.                         charSet = "utf-8";
    " m, |8 S; c/ _( O
  37.                     }/ [/ r0 E; z" o+ G/ P  m& F5 D+ Q+ p
  38.                 }; U( l) P' c5 W
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    " t/ G- P4 h1 Z( k+ C  ?
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    4 @8 {& ~; X& T9 Q, g
  41. . W; D& M/ v" o- K( }7 {
  42.             }
    7 o" `0 e- ^* F7 C* T
  43.             catch (Exception)
    5 w3 m0 Y4 p3 S7 o, J8 [5 z
  44.             {' O: q* }/ O+ ?" g/ X3 l5 d' B+ Q
  45.                 strWebData = "error";
    0 C$ N; `% `! s( }8 x* @
  46.             }
    ) Z/ c. A3 R. Z9 L7 F% y
  47. * w& b) i$ U' _
  48.             return strWebData;# R! o4 ?' c# T( U9 \" l
  49.         }
复制代码

8 |, r; n0 D5 T7 p: A: D0 Q( p0 f+ W2 u. K. o* x% M
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-27 13:50 , Processed in 0.049556 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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