AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

36

主题

184

广告币

270

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1468

广告币

1811

积分

高级会员

Rank: 4

积分
1811

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接4 L/ I9 p" X5 L* t8 r4 I; Z
  2.         public static List<string> GetAllHref(string url)* b4 {$ G7 T. Y& o$ l- W
  3.         {. q. U: r& ^4 i4 B4 Y' I: m
  4.             List<string> allHref = new List<string>();. D) k$ K! y0 D+ P
  5.             try
    ; c- o" u: Q& _; h1 f, X5 n; V* }
  6.             {. X- e0 {$ h' `
  7.                 string strhtml = soso.getHtml(url, "", true);) w2 h5 m- C9 M7 d6 {
  8.                 if (strhtml != "error")
    # o. Z+ n! O+ g. o/ i1 a
  9.                 {( J" s+ b" S  _* c& \
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");: B# @* H% e7 l0 z) I3 Q' U5 V$ ?
  11.                     MatchCollection mc = reg.Matches(strhtml);
      H. r2 _; G7 n9 S7 M+ y' {
  12.                     foreach (Match m in mc), S* l6 |+ V# h
  13.                     {" f; l, M* O, u" E
  14.                         Uri uri = new Uri(url);
    . K5 S8 E4 \+ J+ z3 L) P( g' c
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);6 G, b6 v9 C" o6 y3 h
  16.                         string fullUrl = "";
    ! J6 o  S6 ]9 A: ^( Z3 f/ m! W7 s
  17.                         if (m.Groups["url"].Value.StartsWith("http"))" U8 d! V0 d- R4 j$ H# `# n9 ?
  18.                         {. g' U6 D1 a4 }* i" x) F
  19.                             fullUrl = m.Groups["url"].Value;
    ' ~+ x6 w* [0 w) L3 l, \2 Z% i
  20.                         }
    ; v3 ?: ]. g- ~2 s# |/ i- @
  21.                         else& C/ g3 v2 ~8 k' ^
  22.                         {
    3 Y6 l6 f5 `2 S' f, l; X# o
  23.                             fullUrl = thisUri.ToString();3 U4 I5 j+ `- O$ @
  24.                         }$ a4 M' y+ r* P4 B# q
  25.                         allHref.Add(fullUrl);9 m6 n7 p! Y, r/ s& A5 R6 h/ X+ _
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    & |  r* g8 m4 P4 {. r& E( y% V
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    + E$ q& S& K; a5 n8 u0 p
  28.                         //Console.WriteLine("补全链接:" + fullUrl);- D* Z* D. w0 ]2 L; U# \. C
  29.                         //Console.WriteLine("…………………………………………");7 H9 v* `/ v; {
  30.                     }6 o$ m$ D+ N0 c7 A( L
  31.                 }
    3 A- c/ o8 V0 i! E" p" |
  32.             }$ D, x0 B' Z, _, C0 |) l) j$ d
  33.             catch (Exception ex)
    ) H0 T* p" {/ D8 h- E- _# _" L& K
  34.             { }) x. R+ G" P! }+ J8 k) P
  35.             return allHref;
    , i& ]  N/ C+ r
  36.         }+ F7 }  B7 G9 L) m) _4 P
  37.         #endregion
复制代码
3 y8 e8 r3 x0 B* t" K1 v- f
5 g6 p" O0 p7 ?7 R% T% [

  1.   K8 M0 _6 U3 b  N4 _! a
  2. % b6 p- \1 @9 i! K) D6 p6 g# ^

  3. 1 Y3 ~% M1 ^  f4 q% m5 N7 }
  4. #region 数据去重
    2 b# h& ~0 N# ]7 M
  5.         /// <summary>
    0 V: U# f0 j9 K. Q: g4 i: y) z8 r+ ?
  6.         /// List<string>去重
    5 I. l' i$ t# T, i
  7.         /// </summary>6 r$ V9 k, U' V: }+ [
  8.         /// <param name="list"></param>- U4 Y+ v- W# \
  9.         /// <returns></returns>
    & K* Z7 X: w9 T4 E& O
  10.         public static List<string> getUnqueList(List<string> list)- w1 v( j8 E) C, a
  11.         {
    8 J$ w# |! ^4 l0 V
  12.             List<string> list1 = new List<string>();5 S! n# X+ t% V- U( a9 l% e
  13.             Hashtable hash = new Hashtable();8 U6 R& |. _4 Z1 `8 J# t
  14.             foreach (string s in list)% k# v, d2 V3 g
  15.             {6 s8 A8 W) X: B9 a
  16.                 if (!hash.ContainsKey(s))
    ' N& |" w: t+ O, G. e
  17.                 {$ ]/ ]  ?0 W/ x' u# V
  18.                     hash.Add(s, s);8 E% }  j+ y, U- C! A9 h+ b8 n
  19.                     list1.Add(s);* Q  h; [' t( @  q+ I0 P
  20.                 }8 G1 b8 D" _- P7 H7 G5 j8 C6 b
  21.             }
    ! r3 V. V: L% p- @( n4 ]
  22.             hash.Clear();
    4 {: y5 [  V4 s; ]: S8 q
  23.             hash = null;
    ' c6 M1 y/ Z5 _! @8 s& t7 [
  24.             return list1;
    & S7 \6 l- \9 K% I# k1 r* `
  25.         }
    " |7 \9 A: n0 t% C7 |/ K
  26.         #endregion
复制代码
0 h4 O$ s. p  L; f4 T0 k

& j+ U: t; e- g% M/ x

点评

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

使用道具 举报

36

主题

184

广告币

270

积分

初级会员

Rank: 2

积分
270
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
, X, R% q( Q6 h$ D. H& I
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1468

广告币

1811

积分

高级会员

Rank: 4

积分
1811

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:200 A; s2 G- G; N" y# x# U
十分感谢!!!非常感谢!!
% s+ ?) j  y7 q) n: y- _# P
缺少一个gethtml,用下面这个:% z% N9 h! e+ a( L6 u9 t7 W
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    + P. A1 b' o7 `, K) b# l
  2.         {
    ! G* r3 N0 A- b: @# {
  3.             string strWebData = "error";
    $ G4 |2 `- F5 J# f4 c4 m
  4.             try5 y( w8 h( g0 N# A- f
  5.             {
    8 W, e* ^& E, C+ P2 N% Z" J! ]
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    - B% ^( s+ }- x) l7 H  O  E5 b! ?
  7.                 // 需要注意的:
    & y% U" x2 F4 D
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 * C+ }' v; z" k8 t
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    7 I3 L; s' ~6 o5 @" N
  10.                 // webclient.Headers.Add("Cookie", cookie);
    " H% C# W/ u, `
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    6 m. K& l& r3 n: z
  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)");" Y* h+ |: }$ d" c
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ; n6 q6 Y1 o" k* c1 b! M
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    6 Z2 }2 T' O" ^
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;6 q3 }/ c+ S9 ^5 {; a
  16.                 //如果服务器要验证用户名,密码 $ y- f& k5 G6 x6 F% f, S
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);   g" s2 d0 s; w$ L
  18.                 //myWebClient.Credentials = mycred; ( n. N6 N  u% Z7 @' |
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    . H. J6 M9 q8 r. z( z/ s+ t( A  J
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);* r- D. m% b: r
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    7 _9 @# N5 s" `+ b; m

  22.   [- u; z4 w& I0 p
  23.                 //获取网页字符编码描述信息 / I5 N. K; P" K! n- H3 u
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    5 r2 g" }- M- q5 s; R* x# k6 q
  25.                 string webCharSet = charSetMatch.Groups[2].Value;: u$ }" H* n* t7 Y9 I
  26.                 if (charSet == null || charSet == "")
    ) V% ?- ?; y/ x3 L$ w; r
  27.                     charSet = webCharSet;
    1 k. ]: a6 y$ f% u
  28.                 if (charSet.Length > 0)
    ( b6 i* _% k; Z9 z
  29.                 {
    7 g7 t% N9 q5 }  ~9 E6 o' b8 Z
  30.                     charSet = charSet.Replace(""", "");) `& U; O& s# h' ]. B
  31.                 }6 M, P8 _6 B4 g. a# h' Y
  32.                 if (UseUTF8CharSet)
    & }# ^' g! h! w+ e3 P& Q; Q
  33.                 {0 f# V" Z' q) U: V3 H
  34.                     if (charSet == null || charSet.Length == 0)
    ' \) I) _4 h) L/ C( ]
  35.                     {
    , p* T# Q! q2 u9 T( m# p& O
  36.                         charSet = "utf-8";, R1 F: B; B  v: D, F
  37.                     }
    % [: K# R4 t1 z. R! V' u- j* ]
  38.                 }
    $ Z7 |" H; S) M4 ^) p% `% y
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    6 z2 M! @3 ]; c' S
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    & p& Y6 f; T) q7 A! F) @8 G" b! n1 S
  41.   J+ U. |  P! M! r
  42.             }
    3 P5 Y: y( W" b' w5 l1 ^' N
  43.             catch (Exception)( f- ]  \, [1 n  F( k+ U8 K1 k2 q
  44.             {9 u/ ?" r; @$ C
  45.                 strWebData = "error";  b7 T1 j3 g/ \5 w  A
  46.             }
    5 h& i3 g: Q1 S: l( ~7 N0 Q7 G$ `

  47. 2 c! [6 J* e7 k& @3 ~4 y+ V
  48.             return strWebData;8 d3 y4 A2 S" L
  49.         }
复制代码

4 E: i% a: D( l; L6 s3 \; F& s3 w+ ?, i4 C5 _
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-29 02:29 , Processed in 0.056203 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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