AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Binom
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理泰国仓储,本土仓发货2-3元/单
7200W全球动态不重复住宅IP代理BINOM TRACKER 60% OFF!【广
户】⚡️我们很有钱这些广告位都是我买的
FB/Google/TK点我开户⚡️FB/TT/KW 加白开户ADPLEXITY + ADVERTCN
比Adplexity还好用的Spy工具MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量
百度国际MediaGo,独家原生流量虚拟信用卡+独立站收款行业首创新型指纹Cloak, 谷歌奇效!Kookeey⚡️100%独享⚡️原生住宅IP
全球虚拟卡, 支持U充值免账户投放 FB 广告(送项目)2024做什么 - Media buy 项目库免费黑五教程(持续更新、欢迎交流)
Facebook 批量上广告Bridgeway - 联盟营销网络各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户
Adsterra 的CPA/CPM/CPC 网站流量EU KETO/CBD - Jumbleberry9Proxy ⚡️ $0.04/IP, 无限带宽 cloak斗篷/ss/nutra/cpa/Dating
FB号商直销-24小时自动发货Facebook个号0.01一个FB个号1块一个FB账号0.1一个
FB顶级服务商「Facebook广告账号/批量采购」IPCola原生住宅IP⚡️$2.1/条双ISPFB各类账号出售,售后24h在线
广告位出租全球低价纯净住宅/移动IP-免费试用VMLogin指纹浏览器+多账号防关联 
查看: 7468|回复: 7

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

[复制链接]

36

主题

138

广告币

225

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1357

广告币

1718

积分

高级会员

Rank: 4

积分
1718

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接4 g( q7 b' c% [+ q5 G
  2.         public static List<string> GetAllHref(string url)
    5 m+ o2 A9 i8 l( E/ M) P  q
  3.         {: C7 ~3 e1 W3 q* E  m( {+ `/ Q
  4.             List<string> allHref = new List<string>();7 V8 F+ ]7 u" y8 @( E5 h+ m9 E
  5.             try+ m: `! Q& M) K) I* j3 ^
  6.             {6 F4 L  C$ d; i# o$ h
  7.                 string strhtml = soso.getHtml(url, "", true);
    8 y0 g2 r( V0 I& G- o+ Q, X: N8 U
  8.                 if (strhtml != "error")
    ( ~, O5 P  W" j0 l+ H  s  d) O$ ~
  9.                 {$ ?( z6 l. N* t' E7 G
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    8 D& C: g9 p  A. P
  11.                     MatchCollection mc = reg.Matches(strhtml);/ X' ^: F* m+ B
  12.                     foreach (Match m in mc)2 E& Z  X3 ?0 \+ s) ~
  13.                     {8 R9 l- l0 T4 X! k
  14.                         Uri uri = new Uri(url);3 f" ]; _, o- B* K0 m& ?( z) H! Q
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);& D* E! W& k0 `+ v7 Q3 i
  16.                         string fullUrl = "";1 x8 G1 m* c: b
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    $ b5 i( U1 y& h  x, f) H, c- u
  18.                         {/ @. p2 f9 m9 K" r8 c9 b
  19.                             fullUrl = m.Groups["url"].Value;- i5 U' F3 Y# V) a& }3 `# A
  20.                         }, \/ [. \' i8 _' M4 B
  21.                         else
    % R- b" C7 g  \4 i9 j# e
  22.                         {
    8 P. j9 x7 m: b, ^. G  s/ O
  23.                             fullUrl = thisUri.ToString();
    ; j% L) f( t% D$ H! j$ ?
  24.                         }+ n0 I; E9 e% \5 X2 H
  25.                         allHref.Add(fullUrl);: S' K) r2 h, X* H+ Q% a
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    4 Y- }; C; p; M. R. `" `
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    - Z/ y5 j. e4 d$ s$ S
  28.                         //Console.WriteLine("补全链接:" + fullUrl);- Y- I$ i" _) m4 x: [) S$ M
  29.                         //Console.WriteLine("…………………………………………");
    , d; F9 S7 B, \6 \, a
  30.                     }
    ! B4 }7 F4 @1 K" [* d$ T6 t- U) j
  31.                 }
    / A  X# f* q) u$ r0 \
  32.             }: P& M2 v- v' P) W* P
  33.             catch (Exception ex)
    - ?5 w9 U. \  Q5 ^& o; m! W
  34.             { }/ j% y' ?( n# t$ n) ~/ q$ G" ?
  35.             return allHref;
    - m8 S4 @+ l! S( j/ b& Q/ p
  36.         }: p! j- h4 c: m9 ^( ^! V- @' x
  37.         #endregion
复制代码

  X6 l6 S4 o8 ?* T. I& I) s9 o, A/ `2 [

  1. " M* ~" {3 G- f% C# Z
  2. # o5 T; Y( \" @" R1 S; z

  3. % {% B2 E) }% a4 L
  4. #region 数据去重
    1 J7 g- u- W% \8 g& w# Z% I
  5.         /// <summary>/ d: F9 x# m2 J2 A  j, C+ @& I
  6.         /// List<string>去重4 s9 F8 d  u$ U* Y, B+ N- e
  7.         /// </summary>
    3 ?0 U5 \$ i% A& R; b
  8.         /// <param name="list"></param>) j& T) f0 f$ o5 c: V$ B8 N' T
  9.         /// <returns></returns>
    ; C, S5 W, l& @& E5 C6 q
  10.         public static List<string> getUnqueList(List<string> list)2 o+ ?2 C3 o$ Z! [' A+ L
  11.         {
    4 E. u& I" k+ c) }1 l. F- e" {
  12.             List<string> list1 = new List<string>();6 M/ [/ y9 E. [$ }  R
  13.             Hashtable hash = new Hashtable();' B! f3 s! {& A  q1 p9 a, ]. w7 A
  14.             foreach (string s in list)/ X; g! v; s! N3 N/ [* d
  15.             {
    , |9 I# q/ v, X" c6 F* d
  16.                 if (!hash.ContainsKey(s))# O$ ]/ u- N$ o/ h
  17.                 {# Z) G+ l2 p- e& o( c* W6 J
  18.                     hash.Add(s, s);: ]7 Z( F8 h0 r$ }
  19.                     list1.Add(s);! Z/ R) S! @. Z* ]* {/ |) v
  20.                 }$ y7 C- r4 Y) v: \, h* L) R
  21.             }
      c& N4 C/ ?) i) N& B4 ?
  22.             hash.Clear();: G3 C- O0 ?; k7 @8 U
  23.             hash = null;8 g6 c8 N, c# L: Z8 @
  24.             return list1;& e. Y, W( m3 r# C4 G! @
  25.         }" d8 R% Q) l4 }# O
  26.         #endregion
复制代码

# J, _. |8 s) D/ \! t8 o+ T/ @1 h5 q0 v, p! T: h

点评

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

使用道具 举报

36

主题

138

广告币

225

积分

初级会员

Rank: 2

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

: S, `7 {9 d. M# t: s十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1357

广告币

1718

积分

高级会员

Rank: 4

积分
1718

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:203 b4 R3 s4 U7 \) _
十分感谢!!!非常感谢!!

: H+ v7 w7 [+ P3 r缺少一个gethtml,用下面这个:
! u% ^. x0 r& U3 z- }
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
      U' M+ y- i! h) p) Q1 Q
  2.         {
    ; F6 w# }  C& b& [' D, `
  3.             string strWebData = "error";
    4 R) }% m$ P4 X6 {' B! C+ Q
  4.             try
    5 q% a# e5 Z+ O  t5 j
  5.             {' K9 Y0 b- W1 s- b
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    - |  U7 W8 L! d0 T6 S9 h
  7.                 // 需要注意的: $ _+ `7 e1 v3 P
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 8 J: |" C0 f5 v# h5 d
  9.                 //这是就要具体问题具体分析比如在头部加入cookie + H& ~9 P) G  V" p
  10.                 // webclient.Headers.Add("Cookie", cookie);   E9 s; {% A7 o' i1 c$ B
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    " d# J8 z6 }3 G0 u
  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)");1 Y: H* V! s* |) W. s) F9 V* U
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");- q( O$ j! ^: Z+ ]
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
      N7 M6 d% B9 g* v8 l3 U" X
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;) y9 F' V- o. r6 {, }* A
  16.                 //如果服务器要验证用户名,密码 & M! L$ h1 v7 n4 ~, b8 W
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); . o' m/ I: j+ B& H6 a( ~7 `6 l( V
  18.                 //myWebClient.Credentials = mycred;
    ( ]  V2 `# I3 E) \
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    5 L: z" G0 r. P. d/ Q0 I9 q5 i
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);7 t- \+ @5 ~6 ^5 J, k  v4 L( @8 [
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);+ {7 i/ U7 U1 o% ?0 J2 {

  22. ( S+ D! h+ }, F. D/ O, w
  23.                 //获取网页字符编码描述信息
    ! t6 ~& g5 D  V2 S& n. u) p" `9 o
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);, `! Y( c% c' V8 {# {0 H  Y2 N& R+ O
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    8 k4 g3 P, ~& W) z- {
  26.                 if (charSet == null || charSet == "")$ F2 Q5 S6 T& G5 g3 u
  27.                     charSet = webCharSet;
    ' n" X# O! W. I+ A5 I  @
  28.                 if (charSet.Length > 0)
    * }7 I8 P2 t9 w  X
  29.                 {4 i/ S5 C8 B& t& j
  30.                     charSet = charSet.Replace(""", "");
    - v! h$ S9 N) G) r) ^% K9 K) j  @
  31.                 }1 Q. l' W$ `. z  g" q0 z# T
  32.                 if (UseUTF8CharSet)0 ^0 C' x! A* C4 H" p
  33.                 {# _5 e0 T0 X- I; T
  34.                     if (charSet == null || charSet.Length == 0)" g" W) u' H) N0 U4 i" l0 `7 B
  35.                     {
    % E- D3 w. R0 J7 T5 }
  36.                         charSet = "utf-8";# A0 p: W/ {% e8 Y$ V
  37.                     }5 p8 z4 a7 g+ R+ b# B4 l
  38.                 }+ F6 x% \4 W1 W! H& T2 P) j2 s
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default): j5 K0 C( v  l: b
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);; a: Y, \! g8 t

  41. % ^/ y  P. s- ^1 t: U* s; ]
  42.             }7 ~# b/ W$ A5 l3 \5 U
  43.             catch (Exception)1 E3 X8 M" z; P
  44.             {, f# k; p5 `: K6 b3 b0 T
  45.                 strWebData = "error";
    / N2 w3 [" \  y
  46.             }, [  v4 b- D7 W& @) u8 `- S

  47. 9 p0 c8 U( i, F* ]  A1 V& ^
  48.             return strWebData;
    % \, X3 n3 s' W- d2 a' H: D
  49.         }
复制代码
+ H# d* W+ s2 @$ }$ b$ }
6 m5 d9 ~! }1 W9 ]2 f
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

Binom

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

GMT+8, 2024-6-10 19:54 , Processed in 0.046183 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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