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%,国内持牌机构  
查看: 9763|回复: 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 抓取全站链接
    1 I8 l+ u( {7 S% w% w0 X5 Y9 s: z
  2.         public static List<string> GetAllHref(string url)
    8 t7 B3 j) C  @- c
  3.         {
    4 P( K( p0 @* c, v$ @) J! g+ |
  4.             List<string> allHref = new List<string>();4 N: L; j' @& _: o9 q9 ~/ u" {
  5.             try* [% V6 H0 Z: n$ s" w, }5 s# |
  6.             {$ I) r8 {) L5 i+ x) g
  7.                 string strhtml = soso.getHtml(url, "", true);5 R% d% B% G5 ~* F/ r' T" T
  8.                 if (strhtml != "error")
    6 ^8 Q8 Z( _" u# w, A" m& e; c0 E
  9.                 {
    1 e) N3 j" [" n
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    " s2 |( S. j9 c3 K
  11.                     MatchCollection mc = reg.Matches(strhtml);& X# x# ]/ I/ F6 A
  12.                     foreach (Match m in mc)
    ! m) b) E4 e, q5 V
  13.                     {% X9 }1 `' C7 a! a  I! h0 Z* y
  14.                         Uri uri = new Uri(url);
    8 m8 X$ `8 h& F0 V) b- H
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    / X# ]  b; e! C2 ], f+ N
  16.                         string fullUrl = "";
    8 u3 X7 [9 j* A
  17.                         if (m.Groups["url"].Value.StartsWith("http")), T* o! A3 y, ]) t8 \
  18.                         {  y) r& l; `  z
  19.                             fullUrl = m.Groups["url"].Value;  |! c. x, k0 L0 ]9 r
  20.                         }
    & s6 d2 d2 @) p+ o5 x2 ~3 U  Q
  21.                         else
    9 g- }" j2 g0 X) e* }
  22.                         {
    ; W! ^3 m3 o+ W# v: \' H
  23.                             fullUrl = thisUri.ToString();
    ) f% G; t/ w. [# w6 ^. l' f
  24.                         }. M9 C# _) H9 {% k& v0 |) B( @
  25.                         allHref.Add(fullUrl);
    0 ]; G& M7 U5 i$ L6 O; D
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    # k2 i) H. o" `! }
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    6 w. p$ O: f2 j. Y/ y6 O5 V
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    7 P( P  q9 F& B3 ^
  29.                         //Console.WriteLine("…………………………………………");/ c7 b5 y% \- G. f( J4 L+ \" ~
  30.                     }
    ; e. r& S8 K0 D; a. X, p" w
  31.                 }
    # R. _1 b2 h* N+ T; Z
  32.             }: K- }- F- }# Y8 ]8 U
  33.             catch (Exception ex)0 N$ p# ?( r8 _+ _# u" @
  34.             { }0 e0 R0 u3 A+ F
  35.             return allHref;
    ! s9 e4 a7 ~+ d, U
  36.         }" |. Z# n7 A  @
  37.         #endregion
复制代码
- \, U. v3 k# y! ]
5 A% {  Z8 b- U$ ?; a

  1. + G8 Q- l1 G: L! N& A; c

  2. 3 s0 ?: S1 y+ _4 h; h. m: U
  3. ( l% @' s: y( F
  4. #region 数据去重
    ) a* m" _: X! r9 v9 P
  5.         /// <summary>
    ) _) U% X5 t, C/ s5 I
  6.         /// List<string>去重, M+ o5 Y: r/ b9 P. W
  7.         /// </summary>7 L# p" \: y% |& b/ t
  8.         /// <param name="list"></param>, v" l' j( s+ K1 z$ A3 D: D1 _
  9.         /// <returns></returns>2 a, c7 w1 G. w
  10.         public static List<string> getUnqueList(List<string> list)5 L, A! o% E) B/ X$ l$ n
  11.         {, `1 ?2 h- P0 r5 _
  12.             List<string> list1 = new List<string>();& U  {- |) w8 f* Q1 y# A1 Q5 s2 g
  13.             Hashtable hash = new Hashtable();6 o) B& M( q# e% Z
  14.             foreach (string s in list)
    * P: V1 ?5 d, f' e3 m- b8 ~
  15.             {
    9 ]' f5 ~$ [# w3 D5 a( v
  16.                 if (!hash.ContainsKey(s))
    ( L! O! F# s7 V' c4 C
  17.                 {
    5 i/ \5 y5 b; q& @
  18.                     hash.Add(s, s);
    ) f* d) x5 [5 f
  19.                     list1.Add(s);
    : }6 n+ y  R  h0 X# v: y- T
  20.                 }. \. I8 A; p9 W( a+ P; U# W$ U- d
  21.             }( [8 m6 X- F  s& o9 R9 z+ I6 A
  22.             hash.Clear();: b% I0 T) a$ ^+ p
  23.             hash = null;
    9 {* Y6 j$ H! h, ~9 t
  24.             return list1;  z+ D% q/ P( r. m6 Z7 E4 o) O- j
  25.         }
    1 f+ r! O/ h5 o
  26.         #endregion
复制代码

' n) f3 S& l& o4 o/ N2 c3 e' }: a4 o

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

, a9 R% x- g9 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) a" m2 v! k% H/ ^: j
十分感谢!!!非常感谢!!
* n' h  C/ T* R: `4 j% Z% W, E8 j  I
缺少一个gethtml,用下面这个:
' x7 ?3 I/ [2 t3 {& f. s2 i
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    ' a1 R9 ]) h4 I  b  ~* ?% p
  2.         {
    1 w% C$ ?. ~# t: F
  3.             string strWebData = "error";
    / e1 a* O6 L' r3 }2 L- Q
  4.             try
    4 t5 R5 _+ }3 N6 Y% e1 ^
  5.             {6 a2 k$ w) k9 I9 U: O7 ]' L
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ) G0 S, @% E- ^) V6 I
  7.                 // 需要注意的: : G5 L4 I* W+ l0 c; p+ n6 @3 E: `
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 , Z2 v+ l0 W5 Y; w7 m
  9.                 //这是就要具体问题具体分析比如在头部加入cookie   X( C" h" V) D1 [9 ^! K
  10.                 // webclient.Headers.Add("Cookie", cookie);
    3 c# g6 Y) n$ T1 U& m: q; \
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ' G- j. v% |9 q+ J  Z' `% M
  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)");
    , B% ]1 g; v* c* M  T
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");2 O7 ]  [0 w3 |* s' Z5 H2 i
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 * ?- J6 M4 S8 B: `$ g* L" f* |
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;0 |3 ^: _5 |6 W) t
  16.                 //如果服务器要验证用户名,密码 " p4 l6 d" M7 x% e1 b. j. w: [
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); - e/ P* G9 Q3 t7 l
  18.                 //myWebClient.Credentials = mycred;
    0 ^, D% O+ @  Y' _! Z  {# U
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    , t8 N4 T8 A7 W" N
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    4 a  m  b( c- m1 k9 t7 U4 V1 L
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);* A# {1 b2 e( C: E6 ~( w5 j5 i3 {

  22. ! \  a5 G" [" n& p# I  _. U
  23.                 //获取网页字符编码描述信息
    + _# J% n8 k+ e6 Q8 }; Q3 d
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);1 q0 w6 [, q# p8 f2 X( U
  25.                 string webCharSet = charSetMatch.Groups[2].Value;# M. P" ~- w! B9 N, G6 o+ C: ?0 t/ Y
  26.                 if (charSet == null || charSet == "")& @- l/ m# @2 `6 `9 b% A8 K  Z
  27.                     charSet = webCharSet;
    ( c& w( h: m* q6 y
  28.                 if (charSet.Length > 0)
    ! y: U  ^& V$ e' J" y
  29.                 {5 ^( M2 b  @! L( Y
  30.                     charSet = charSet.Replace(""", "");
    ! S! @: j4 e2 Y
  31.                 }
    1 o: H& }, B! O9 L
  32.                 if (UseUTF8CharSet), q% c; \- |2 v6 t
  33.                 {( t1 J* N: l$ f: k5 _, Q
  34.                     if (charSet == null || charSet.Length == 0)
    , K5 W1 G$ T9 C. Q
  35.                     {
    9 _; P: t2 l$ M  C1 p1 h
  36.                         charSet = "utf-8";7 v3 u% U: r  G2 l
  37.                     }. k% o' `4 @2 z- J9 e4 d9 u
  38.                 }& A: K+ a5 w& o
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    / g; [/ `8 C" H# Q$ I/ v+ q
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    8 X& x6 [% @; D0 u7 P/ V

  41. 1 f* E$ ?6 G& O& }9 Z5 `
  42.             }9 D: [3 M% h2 n: K; Y, V
  43.             catch (Exception)" L6 p* i0 M7 C
  44.             {. K6 |6 B/ J% O7 K- Y
  45.                 strWebData = "error";. Z. M0 P& E3 ^( E
  46.             }
    1 |, a1 i- J6 x% o8 \) e6 _4 L  Q

  47. 0 ^! u2 M# I! F% S1 g" a! y1 I3 g
  48.             return strWebData;
    " D4 k* u) g! c2 S
  49.         }
复制代码

: c5 x! F. v6 l  ]( N$ S
$ m: F' F+ Z+ ]) {8 F( T+ @5 s
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 03:56 , Processed in 0.054918 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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