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加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9835|回复: 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 抓取全站链接
    : G: B+ Y" {# E  R( L
  2.         public static List<string> GetAllHref(string url)
    2 R( \& S2 r% q& U5 l" g. ^
  3.         {
    3 s# F- ?# M' _, ?2 y% L
  4.             List<string> allHref = new List<string>();- w" e, I/ K- G( `
  5.             try
    & p0 o+ M* [9 {
  6.             {
    $ ~  l/ k- V4 P1 R
  7.                 string strhtml = soso.getHtml(url, "", true);
    $ \( i/ \3 B- r/ t
  8.                 if (strhtml != "error")5 {& ~0 A1 h! m" p+ A5 M8 K& h
  9.                 {7 R( _5 Q5 A* O2 a4 ^1 P- H
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");+ C; x$ b4 r4 k, ?5 i: K
  11.                     MatchCollection mc = reg.Matches(strhtml);
    4 U/ f# [6 U3 _% y) x1 n
  12.                     foreach (Match m in mc)3 H* D4 N3 \1 S
  13.                     {
    0 a1 s7 z6 n4 V9 L, |* Z
  14.                         Uri uri = new Uri(url);
    ) g' W9 J* X3 A
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);8 y/ g, V- O* n( V
  16.                         string fullUrl = "";9 Z) z- \2 J" h/ ]
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    6 ^# B0 j1 G2 p- R; C. W
  18.                         {- ]# b0 z2 O' @# e- G
  19.                             fullUrl = m.Groups["url"].Value;) P* u, N" v2 j
  20.                         }% W4 S* h. Z* R6 ]
  21.                         else
    , G- e! e0 L5 K" C. O
  22.                         {
    0 o3 o! f% U& c8 k( R7 a
  23.                             fullUrl = thisUri.ToString();, N! ]4 r' S/ K2 C
  24.                         }1 a" j; ~* Y6 ~8 y" ]1 T
  25.                         allHref.Add(fullUrl);
    $ i7 k( A+ U. z) g
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);' O5 y1 }0 U4 |# N1 ^. b4 S. r
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    / k8 Y- x$ f& d( U( _
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    2 t2 E3 D+ q% |9 p$ o
  29.                         //Console.WriteLine("…………………………………………");3 Y' j+ a2 g6 i( e. f
  30.                     }. ^  t3 Y3 P  P( o: _) t1 p
  31.                 }
    $ G  e, D9 N2 U  Y' E5 ~
  32.             }
    - F; q  G7 q: A4 H# C
  33.             catch (Exception ex)
    + Y: w- P3 b3 p) j3 O% A
  34.             { }/ W$ o/ j7 c4 t3 f8 n
  35.             return allHref;
    ( H6 C% H- r( M9 W
  36.         }
    * z0 F4 R/ r% F; f" M0 I
  37.         #endregion
复制代码
- ?9 z0 R  T+ _

2 e+ U2 Y5 T9 n0 n# n3 `5 m; l
  1. 6 C. V9 v2 V/ @$ Y# M0 e, {
  2. 6 C, B( Y/ @# w) o$ R6 [6 `% ]
  3. " Y- e2 c7 q0 W) U$ K4 [
  4. #region 数据去重
    ' x) w  t4 d+ C# d2 F
  5.         /// <summary>
    . q0 r( G' @/ k- ~% T
  6.         /// List<string>去重
    ' S, [1 f$ Z3 f8 E! A4 b; ]+ {
  7.         /// </summary>: X# l6 U% v; P7 e2 p# v# x
  8.         /// <param name="list"></param>
    9 P6 N7 `# ~+ w' _
  9.         /// <returns></returns>
    $ R* e3 K/ @% v1 A$ h  t# i7 i
  10.         public static List<string> getUnqueList(List<string> list)2 U8 k  }3 {! p1 X
  11.         {
      ~7 l7 C  k% Y4 z4 ]& T
  12.             List<string> list1 = new List<string>();; O0 S) A" Q- P* W
  13.             Hashtable hash = new Hashtable();% y: h8 ?& K- Y+ |
  14.             foreach (string s in list)# F$ \4 F# `7 U
  15.             {
    - ]4 o6 V; Z3 e# U4 A
  16.                 if (!hash.ContainsKey(s)), d/ x8 R" }, e: j* E
  17.                 {
    , l4 X. H: L; _, A
  18.                     hash.Add(s, s);
    ) p$ ?7 \- _  B) t* @" P
  19.                     list1.Add(s);0 O& ^& i7 @; [- I, @: D- u/ W8 E
  20.                 }
    ! z$ b1 m4 e, r6 X1 y5 @7 F+ l
  21.             }1 E* g1 F# o4 s; P& y
  22.             hash.Clear();
    / |, S3 h3 U* ?/ {
  23.             hash = null;  Z3 s: L5 d' g- B, h+ E
  24.             return list1;
    7 h1 y: @: m$ e
  25.         }
    9 q/ h, J. v# c/ o! p" W! W
  26.         #endregion
复制代码
2 S" w. i% Q7 L

* i% M8 c$ ^2 @6 o" \

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
* |6 r  n2 ]% t/ r4 s
十分感谢!!!非常感谢!!

点评

缺少一个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
9 w$ i1 T# D5 X# R9 r十分感谢!!!非常感谢!!

0 h3 c# t# S& m2 g6 f# ^' U缺少一个gethtml,用下面这个:2 S" _  q  L, a1 s1 o
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 2 @9 v# L. M+ s
  2.         {3 d5 H7 ]" F* |, k4 s$ r3 F" H
  3.             string strWebData = "error";/ F/ S" b6 w) _# Q" O  S6 F
  4.             try
    ) w. v$ |- T, {- V+ C5 u0 v
  5.             {8 S$ p! ^2 T/ S, s9 P& w, ?2 _
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    4 B6 u7 ]* I8 x" b; N; I  U# W
  7.                 // 需要注意的:
    % t# U1 k' C3 b9 w
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ! o$ T# r$ R6 B4 A) O( j) l; T+ i
  9.                 //这是就要具体问题具体分析比如在头部加入cookie + f/ u# P! J; E; b! X7 Q
  10.                 // webclient.Headers.Add("Cookie", cookie); ' y7 ?5 d5 l! A7 l8 r
  11.                 //这样可能需要一些重载方法。根据需要写就可以了. a4 x2 |: ]+ q2 M! H& W( g8 y0 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)");# p. ^( }' j/ u) f5 C- a7 Y" b
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");7 I! r3 M# g1 v7 u- i3 {
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    & B2 U) d' G" l- e7 @, ]$ C) ]6 f
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;, D& e- I" p  ?9 o! {% A8 ?
  16.                 //如果服务器要验证用户名,密码 4 i5 E( G' S  E( m8 J
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    / p. l3 U/ J  L) t  o: Z2 k
  18.                 //myWebClient.Credentials = mycred;
    5 Q5 C% d& I. a; P' r, x
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    6 F$ N1 G; E0 s" V5 h* O
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);9 i5 A! A, |% t4 ]" n3 P9 f8 s
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);+ T+ g; Z, ~/ L: A/ |+ \

  22. ! ?3 N" M+ q) v; g/ x9 _3 M9 c
  23.                 //获取网页字符编码描述信息 , J4 j; v$ q2 L( p7 r" H3 l
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
      N; i$ o2 b( S) M$ l% L) }
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    0 z  g/ w/ Z- E  I6 }9 n( Z3 J4 h: \5 ^
  26.                 if (charSet == null || charSet == "")
    + r0 D# ^3 Y2 h! o4 W  M0 G
  27.                     charSet = webCharSet;7 w7 _% N2 j! a
  28.                 if (charSet.Length > 0)
    $ H. H! c5 V- ]5 _) P- H
  29.                 {& D. d0 N0 l7 I, Z: s; R5 \" g, Q
  30.                     charSet = charSet.Replace(""", "");" o0 \* L9 Q! ]( k+ C
  31.                 }
    , z" P1 c, Z2 _2 _3 c+ y6 h; L
  32.                 if (UseUTF8CharSet)6 G" Z- Z: q6 ^( i) E" R- |% E
  33.                 {
    7 v4 ?" e' E# L/ [
  34.                     if (charSet == null || charSet.Length == 0)) _7 e( u8 I6 p8 s; y7 c0 O
  35.                     {
    2 T/ Z4 ^) K$ S# p% ~; X  v) z
  36.                         charSet = "utf-8";/ y" m2 P) v: m: f1 x7 L
  37.                     }; b2 g3 b5 D. T4 `
  38.                 }
    : u; A2 Z1 `# |" d* p& |. @, ^6 k) S6 j$ h
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 U/ e- d0 L  Z+ y6 q& M! R7 D
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);0 x9 r5 G0 ^4 v5 f
  41. 3 A  _2 l# @$ L( @: c- f* z
  42.             }5 J/ l- s+ ^. s3 A) ]8 M& U
  43.             catch (Exception)
    ! k( V, O8 e4 V  B" B3 \
  44.             {# c& e2 m( c5 k, \& n) ?: e" N/ g
  45.                 strWebData = "error";/ Y: L6 o4 I; c6 |8 ~& W
  46.             }; N8 i9 O# C& j1 t; p5 H/ }
  47. / U9 _. K+ a. b
  48.             return strWebData;
    ( [9 u/ o! v8 n
  49.         }
复制代码

* E4 H  E: h6 L) u& Y! P, P% t% {: _; }, `9 ?, h
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 16:49 , Processed in 0.052057 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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