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充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
最大欧洲Nutra网盟BA找量 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理FB企业户海外户,授信户,TK加白户Proxy4Free独家住宅IP池❤️免费测试
联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9998|回复: 7

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

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    5 R6 N4 A0 L4 d& [
  2.         public static List<string> GetAllHref(string url)% K! s# [6 X* f
  3.         {
    / i" v5 Q( Q" K  X! r3 e
  4.             List<string> allHref = new List<string>();3 [! ^) R" {4 V- m: }! ^. ~/ T
  5.             try
    + A( A0 `+ j; G6 T
  6.             {
    * J5 p7 Q! N/ C/ u+ k
  7.                 string strhtml = soso.getHtml(url, "", true);* H$ |3 b: g( Q* f/ I- C, N
  8.                 if (strhtml != "error"). R7 m9 {& I" I' C# Q, J8 P
  9.                 {
    & y( O) u# r# E% B" s
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    7 b( x( K6 @4 z, {9 h  V: T
  11.                     MatchCollection mc = reg.Matches(strhtml);
    & D. \: k: i- U) C/ f; [- U3 [
  12.                     foreach (Match m in mc)
    9 {# ^( ]) r, V& q* P- k
  13.                     {
    - }5 }; e! f! B1 a. E7 E
  14.                         Uri uri = new Uri(url);
    % {# m9 t9 U; F* A: D6 i
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);1 Z) T) Q  y7 u$ C% y( J
  16.                         string fullUrl = "";
    ) Y3 g  b* a* x
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    8 n, }" A6 \% ]- ?
  18.                         {; C3 E1 j' l) Z. r# }, D' T
  19.                             fullUrl = m.Groups["url"].Value;
    # e* l! I% x7 \( P" K# _0 l
  20.                         }0 ?9 L" G, A  T
  21.                         else) k/ ~# `+ G- p8 H& W. x
  22.                         {
    9 a3 {; J$ `; X7 S1 F
  23.                             fullUrl = thisUri.ToString();  p4 ?+ t- F: E) O1 K
  24.                         }0 [) s: @3 R7 M0 U5 p* \& e0 L" N( {
  25.                         allHref.Add(fullUrl);
    9 v, ?+ Q0 j. X
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);: ~0 ^3 o1 }1 G* a7 b
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    2 k5 ?, u$ K1 M7 V6 `; e4 e
  28.                         //Console.WriteLine("补全链接:" + fullUrl);; L0 o5 {- ~- D* l. z
  29.                         //Console.WriteLine("…………………………………………");
    - v/ `) Z7 B. g9 e" n: J- c
  30.                     }- [' R! ?4 z+ o/ y- x$ K) }; t
  31.                 }
      Q' [, f7 s% E  }# T; Y- Z
  32.             }! [4 E; ?) B. [# T  W- q
  33.             catch (Exception ex)4 f, i  p4 L$ p/ E2 v% ~6 L
  34.             { }# T1 x1 ]( H* M8 d/ V
  35.             return allHref;
    % H& ~) L' ~- ]
  36.         }
    & l8 B/ B% N) g' t* H/ i. _; M- {
  37.         #endregion
复制代码

% }5 U' w1 {! s/ [
* x# j4 U" J: y3 f) }  t
  1. # z1 |& S1 w+ P( P
  2. 4 w! a5 ^( V' {! k4 j5 z6 u

  3. 3 M+ F- V6 P8 _9 f! q9 Q
  4. #region 数据去重
    $ T* B, y7 S9 c( f) [4 F; ^; q
  5.         /// <summary>& H) s2 A" E" p: U# p
  6.         /// List<string>去重# n7 H7 [: S/ U1 Z1 n- r: e
  7.         /// </summary>8 u# d5 P6 ^3 M, \% q9 d8 R
  8.         /// <param name="list"></param>3 W6 z, k$ I) T3 {- e  r0 I' ]
  9.         /// <returns></returns>: T8 u1 m: D& B/ a" Q' e
  10.         public static List<string> getUnqueList(List<string> list)  i: z" j  K/ t; Z
  11.         {
    , N" c. \5 P. v3 @
  12.             List<string> list1 = new List<string>();  }7 n3 ]9 K% \3 P- h+ a
  13.             Hashtable hash = new Hashtable();; p2 {: ]2 S# z$ d- l
  14.             foreach (string s in list)
    , R4 e" G! |. g' ?: v
  15.             {. u. f- F( s, z& v3 M
  16.                 if (!hash.ContainsKey(s))/ o5 T. u# L3 {, o5 T8 t; ~
  17.                 {
    5 l4 P: ^, _+ h3 h; Q) b
  18.                     hash.Add(s, s);
    9 o. I- i# f2 A1 |6 W1 r
  19.                     list1.Add(s);
    - ^0 a3 M/ S) O5 j5 j6 a1 b
  20.                 }  T; b9 V5 o( b9 v* ?5 R2 s
  21.             }$ l) f# e* C1 ]0 ?( t  U" m
  22.             hash.Clear();5 v, a- F' t% q. w1 Q! t& x8 R
  23.             hash = null;
    ' k% b- I: L, A
  24.             return list1;. R2 X0 S# a" Q, ^# W/ r( [
  25.         }1 l4 b8 A+ x" k. e+ Z
  26.         #endregion
复制代码

1 w6 i/ `  l4 f' b
" u, t0 e7 M  T' z9 Z7 x+ j

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

5 L6 Y' l4 O' e) n" |十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:201 \% k- w6 z# X  V
十分感谢!!!非常感谢!!
% }. W+ J" u. h
缺少一个gethtml,用下面这个:
3 a$ X% Z9 `  _7 F8 n
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    4 L+ O$ ?8 m8 z! l& s8 b7 _
  2.         {
    # f# E; |) o0 I9 I4 e, [' ^
  3.             string strWebData = "error";
    8 B9 e: n0 Z* d! u: L2 F# X5 x
  4.             try
    , a! ]! g* H. c( E1 {
  5.             {; p9 G6 e4 t2 U: A
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 9 C2 w7 M$ H0 n/ |. m, W% A+ _- J
  7.                 // 需要注意的: . y' c9 O% ]6 I3 b$ Q9 s
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 8 ^: J7 o# r, H& t& P
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ; ]  g- ~6 ?/ `  p2 f
  10.                 // webclient.Headers.Add("Cookie", cookie);
    & B) D! X( r$ V3 w
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    7 H9 ]1 }% `- s, t7 N
  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)");- W8 d. \5 w; h4 S+ {( ~
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");. e9 V7 e" e' C% w- p& t8 ?
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 * x6 R5 L, m0 j( c1 u
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    6 V5 B/ S  b& W. f: w% F
  16.                 //如果服务器要验证用户名,密码
    ; }3 `' _) f& x/ g
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 2 I1 `- l  Q' {6 s+ J
  18.                 //myWebClient.Credentials = mycred; + z( v( b) ?8 s5 c5 f4 [% `
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    0 P& `5 p0 c0 C" {2 v
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    4 B! ^2 h9 E$ g8 L6 M" J& }9 v
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);% W4 P  |, N- q; S

  22. 1 Q5 j( I. g/ Y. R, e# K
  23.                 //获取网页字符编码描述信息
    ; [# E( l8 c" D2 Q
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);5 M( i) V6 e7 V9 o! ?2 H
  25.                 string webCharSet = charSetMatch.Groups[2].Value;( s6 O$ w$ o# ~2 i( t. p+ V
  26.                 if (charSet == null || charSet == "")
    7 [% A% C+ [; ?: F  u
  27.                     charSet = webCharSet;
    : B+ V$ ?+ z0 }. B0 h
  28.                 if (charSet.Length > 0)1 I: B+ \6 v) t; J
  29.                 {5 _" B$ I1 }3 r( [: R
  30.                     charSet = charSet.Replace(""", "");5 P- h) \" g. Q4 d
  31.                 }) a+ y* e: {7 v  I# `+ j4 e
  32.                 if (UseUTF8CharSet). r: q5 ^4 m; `$ ~6 u: u- `
  33.                 {" D( O' G# \3 x7 ?+ N# J  L
  34.                     if (charSet == null || charSet.Length == 0): B1 c# D1 V: _
  35.                     {
    " N. z5 g& v  {. c+ K* X' B
  36.                         charSet = "utf-8";
    7 m; k( ^. k: j% R, m5 |, h
  37.                     }
      F% k, i+ R* S1 r
  38.                 }
    ) ^) u( d3 q- ^0 v( e+ j8 v1 k4 _% u
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)4 a' b* v- a' g( |% G- u/ j
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);; D/ ^3 s  B& P' Q( I

  41. ( g5 w1 F: J4 {6 ?
  42.             }
    ! ?9 `  b% T0 [, w' \6 X( t; P
  43.             catch (Exception)
    2 m7 |4 {, S* _" T
  44.             {
    - _3 w9 g  k2 h. v" O, d; }
  45.                 strWebData = "error";- S0 h  z" B. Y2 S
  46.             }
    ( N& F8 k$ Y1 k! e
  47. ' [1 g( K- |5 ]9 A; i3 {# |
  48.             return strWebData;
    9 H: @5 x& X8 V8 G* l: t& o) P
  49.         }
复制代码

* m7 K+ x% \. d$ x* R
) l, Q% P# g; f6 D  r- U* B
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-29 03:32 , Processed in 0.052064 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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