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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9754|回复: 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 抓取全站链接
    4 G( ?+ w- l7 Z2 K5 [9 k' }
  2.         public static List<string> GetAllHref(string url)7 P8 \* p" \+ ?% v2 q
  3.         {
    # F: e" s3 Z( K5 {# ]: \! z% F+ l0 z
  4.             List<string> allHref = new List<string>();
    # Z6 p9 i, g: x2 _: ^
  5.             try
    1 ~& i. E* d' l  v% u5 P9 f
  6.             {
    " n  B: w/ @, ~; ]) D1 Q* N
  7.                 string strhtml = soso.getHtml(url, "", true);
    & `. l% x; x9 F1 s3 |
  8.                 if (strhtml != "error")6 ~0 ]5 ]: w! m* e
  9.                 {
    8 t$ J9 A: R2 }. ^7 Z) l
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");- t! |9 K: _. I( E2 w3 I
  11.                     MatchCollection mc = reg.Matches(strhtml);
    : E. j5 X- g1 O/ j7 _) w( {( `
  12.                     foreach (Match m in mc)
    " n% ~: A8 u" W1 ]. [5 Y0 t
  13.                     {
    2 X8 c" }  x' `, C: p/ d
  14.                         Uri uri = new Uri(url);
      h, B* {. w' V: c7 F6 M
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);9 b+ |/ p8 W9 g9 q) S0 |9 j$ Z
  16.                         string fullUrl = "";
    " \, e. s) y9 Y" W
  17.                         if (m.Groups["url"].Value.StartsWith("http"))% T. F' d8 v& O1 _/ ~& E5 r, [" W& w
  18.                         {- H$ C: X; ?0 ^4 i2 ]8 a! L
  19.                             fullUrl = m.Groups["url"].Value;
    1 t; J) }0 }& Q
  20.                         }, Z% m# t+ Z) ^0 W
  21.                         else
    : z) V( {5 p! j& J$ x# w
  22.                         {
    2 ]8 F4 m$ i% T. [4 @4 g) H, d" V% A
  23.                             fullUrl = thisUri.ToString();  L% a; m8 c3 ^( s- `# ]
  24.                         }
    * a* V0 o; D0 _' L- M' F
  25.                         allHref.Add(fullUrl);
    ( s0 N8 Q$ \0 s' A6 {
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);/ J) r4 S- i% c5 B1 ?
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
      G! r, Q- b, d3 x
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    & w( i  \: @+ R9 g
  29.                         //Console.WriteLine("…………………………………………");' s4 B! I4 l# K  Q* [6 h
  30.                     }
    4 D' y7 ^; c7 N9 t# Q
  31.                 }
      b5 g* v8 F3 N' b! ]
  32.             }( r/ g, Q" X* @& Y
  33.             catch (Exception ex)+ j( Z: f; z* R1 i
  34.             { }2 {3 O$ p0 Y1 j
  35.             return allHref;* x0 y: M1 X  @
  36.         }- T1 j; J+ i$ a# f$ F
  37.         #endregion
复制代码

5 @" i+ I0 X, J4 _$ l
8 {0 L+ q( E. Z+ a5 }2 N% k

  1. 6 o7 ?9 Y6 C- B5 @% v* y

  2. 9 ^) ?* z: u% q/ \

  3. 0 V! D# M. v1 ~  r
  4. #region 数据去重
    : Y$ @/ w) S0 F; s! o+ L
  5.         /// <summary>$ x$ w0 i( F7 e; U9 ?0 y
  6.         /// List<string>去重7 N: s$ t, O! l6 Q9 N9 L
  7.         /// </summary>
    7 `( M- ]! ]. w! ^
  8.         /// <param name="list"></param>$ k& {6 N) p7 L% c* U+ I5 p2 G* d
  9.         /// <returns></returns>) K: J+ E. l; j/ I$ {
  10.         public static List<string> getUnqueList(List<string> list)
    3 ?, e5 _: ^! m: L
  11.         {
    % w- A/ X# f% W' V8 O
  12.             List<string> list1 = new List<string>();, i' G# B2 V" e7 e% J. T5 `1 K
  13.             Hashtable hash = new Hashtable();. e7 D% f7 }& ]
  14.             foreach (string s in list)& z# J+ |' b' e0 S) P% F
  15.             {% u" G% P+ n, b0 A1 `
  16.                 if (!hash.ContainsKey(s))  a; _% `: [0 ^' O' B/ _4 _# W: E
  17.                 {
    + p( A8 q+ |" P, l4 d6 Z. U- G
  18.                     hash.Add(s, s);
    2 l+ L# `4 b; Q7 R7 R  T
  19.                     list1.Add(s);
    4 D# \; G! c# v& s6 I
  20.                 }
    ( Q3 c0 x% B% U) i
  21.             }1 }% ~9 B3 F+ W& J
  22.             hash.Clear();% d' O, a( G$ P* W
  23.             hash = null;- w4 P0 V" S; e" Z
  24.             return list1;( y" b! u( u& e7 U
  25.         }
    ! }1 V+ h& w; g0 X
  26.         #endregion
复制代码
. {- n+ L8 z+ u3 g3 s& T* V

3 V( X9 z: E/ R2 b8 N

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

5 |8 i) g; k. q) Q十分感谢!!!非常感谢!!

点评

缺少一个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% Q0 {. I# y/ X
十分感谢!!!非常感谢!!

& y( L1 b6 @. a0 J  |缺少一个gethtml,用下面这个:
! J' W7 d$ E: ~8 q
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    - X! d* |1 v. J# a0 v( O5 o
  2.         {
    # b, @" {* t% I! k6 f7 I) T2 I
  3.             string strWebData = "error";
    ) |0 u  ^, W' C$ ]
  4.             try
    ) p$ Y* o  Y( {+ |
  5.             {
    ' h2 J9 v5 r' j7 x
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 8 U. \$ K' j7 o# f3 o6 B0 n- z, J: E
  7.                 // 需要注意的: + N: Y% B9 \* j- f- {7 w
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ' l1 _5 M0 `4 Y. k( q& t( V0 }
  9.                 //这是就要具体问题具体分析比如在头部加入cookie % U3 Z9 k, {9 G" L9 f7 n2 C# p
  10.                 // webclient.Headers.Add("Cookie", cookie); ! Z- ?; y* I4 }  [
  11.                 //这样可能需要一些重载方法。根据需要写就可以了; C6 j9 b  i4 v( @
  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)");
    3 c1 |; g9 D5 J7 N# R0 h) Z4 F9 m
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ' T8 X  u. P+ u0 Z) t! ?
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ) W+ l* K. P& U
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;" e3 x: ~/ E, G& Z# ?2 J
  16.                 //如果服务器要验证用户名,密码 ; D# \  H6 n! Q' |5 r# n  A4 |
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ( j, P# H, l& ]7 r
  18.                 //myWebClient.Credentials = mycred; 5 g5 B# V6 N2 y% H
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) $ ?$ q* c' i, f6 r8 |$ a
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    1 g. ^) \7 t' w6 e' i; }* ^0 |
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
      ^; f1 s( }' v# E& l8 X. v4 ]

  22. % p# G2 ]: I' U
  23.                 //获取网页字符编码描述信息
    4 S+ ?% X$ P/ x9 M- e
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);; @6 h5 O; k/ g! t
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    5 _8 e& P* M; g0 a; d% f
  26.                 if (charSet == null || charSet == "")
    2 x+ g  M- b$ M" E3 u$ w5 ]& h
  27.                     charSet = webCharSet;: C5 Q0 Q4 n! f
  28.                 if (charSet.Length > 0)- h5 B, X% P8 r4 a, g
  29.                 {6 i) w& h: \" d
  30.                     charSet = charSet.Replace(""", "");
      r8 i# y5 g# W3 g' e( O
  31.                 }0 X. w& ~1 k7 @" t! s7 z" H
  32.                 if (UseUTF8CharSet)
    ( a) E/ F# a( z
  33.                 {
    ( D9 d* v2 J( y" `/ c# A6 q! {
  34.                     if (charSet == null || charSet.Length == 0)
    + ]! E/ ~9 ]6 K* H% V! h  k
  35.                     {6 Q1 L. R5 U3 o/ _, x
  36.                         charSet = "utf-8";
    8 N  w" ?6 ~7 ]) \
  37.                     }
    ' V( O, N' V- x, c
  38.                 }+ @5 _& I9 v' |1 |, j2 Z
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)1 \; O% ?' `1 W
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    . X' n' z. S* X  X3 r- V

  41. ) d6 S8 F. ~: r7 J! J
  42.             }
    ; n0 s$ _6 k% Z; c
  43.             catch (Exception)
    * s. ^# ^& F" j) ~
  44.             {
    1 h( x1 K1 ?* m( o: Z, @
  45.                 strWebData = "error";0 [  }$ \  v) {; U$ n9 I
  46.             }
      B% B3 S/ o5 j7 O$ I& b1 T
  47. . K* A, }6 w$ \' Y0 Y
  48.             return strWebData;$ o* I6 v2 w& ^. g6 a) @
  49.         }
复制代码

& s6 w9 ?$ q7 B
8 }& L1 U! {$ h2 m
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-16 07:38 , Processed in 0.057204 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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