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加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9952|回复: 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 抓取全站链接
    2 G2 o8 s9 S5 U; F5 \0 ^$ y
  2.         public static List<string> GetAllHref(string url)+ U8 [4 @5 J6 `% V; w; U
  3.         {( V  F& a1 ?2 U! D
  4.             List<string> allHref = new List<string>();$ y* I8 o4 Q& u' ~8 L+ F3 m: \$ O
  5.             try
    8 n/ p- c- F: |( D* o
  6.             {
    * Y8 `, i: H, q9 e4 b
  7.                 string strhtml = soso.getHtml(url, "", true);/ {5 Y  y* I4 n& D
  8.                 if (strhtml != "error")5 ~, o  Z! C* A$ W$ n* v7 ~
  9.                 {" y! t: G" }5 I3 G3 C
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");. K8 o8 i7 B2 n* p$ _
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ' O% }  t0 q4 m: k% I
  12.                     foreach (Match m in mc)+ P, T+ t5 C3 T
  13.                     {" o! ^* G9 ?) B, y/ K4 W! {
  14.                         Uri uri = new Uri(url);
    # M& o/ J& W) K
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);. r5 @4 [5 D# g6 K9 x% e7 ]' j
  16.                         string fullUrl = "";
    " s. S  G3 i8 ^" d4 n# w
  17.                         if (m.Groups["url"].Value.StartsWith("http"))! c4 w4 {" P+ H* `: X" ~
  18.                         {
    # @! b# U4 e  D1 A! c* f
  19.                             fullUrl = m.Groups["url"].Value;4 t" l% q  J' ?. X+ \3 _
  20.                         }
    0 ~# ^% k" w' n7 n, f6 _0 q! B
  21.                         else
    ; t( l  G+ x9 C1 f* R0 [0 g5 }
  22.                         {
    8 ]- Z* f0 U: T2 p4 o
  23.                             fullUrl = thisUri.ToString();+ t/ F4 G: L! e5 O  L- j: s
  24.                         }1 R7 p5 t  L6 q: p' p
  25.                         allHref.Add(fullUrl);  x7 C+ d) l/ Z6 S
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    " Z- V" l% l! Z+ r' G
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ; ~& w. z- g$ \) q4 U* g: x
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    : r8 D) \7 c2 Y# j) ~+ t# b# o
  29.                         //Console.WriteLine("…………………………………………");
    5 |9 `5 f0 P" S" i
  30.                     }' t6 h8 f& W; [/ x6 ?4 C/ Y
  31.                 }
    % B6 d" G( z& R1 c& _5 k4 d
  32.             }! d, p1 s; g/ ?! j
  33.             catch (Exception ex)0 R2 o+ U$ C' n4 G- }
  34.             { }* H/ K* w$ S3 G9 i: C
  35.             return allHref;
    2 ^$ W+ B( O0 M; V
  36.         }
    5 G2 v6 D  c6 S& p* e3 a3 p
  37.         #endregion
复制代码

; }5 m- m2 a6 Y1 V7 X( e' C# A8 N/ I' q* _6 _' G

  1. 0 U7 V2 O# \) g) {/ U; y
  2. 4 [# V8 `0 l4 u: u7 U: i
  3. - Q4 n$ Y6 f0 _- z
  4. #region 数据去重8 a! j& A" ?* H; @. ?) U
  5.         /// <summary>
    5 L5 J+ l' j. f+ o: v: y
  6.         /// List<string>去重
    - ]0 t% H( J  Q8 t5 ~5 y
  7.         /// </summary>, Z3 ?5 Y- x' H" Y! \' D6 J  Y8 A
  8.         /// <param name="list"></param>
    4 V5 d& C% `& F: x% z
  9.         /// <returns></returns>
    . Z4 m8 y$ F0 }* B
  10.         public static List<string> getUnqueList(List<string> list)$ d: }+ M2 P5 c. \6 E# q8 T  `0 D$ p
  11.         {
    1 D) U- ^' c" t' `4 _) }8 [
  12.             List<string> list1 = new List<string>();- ]. }  N. G* G0 w& x
  13.             Hashtable hash = new Hashtable();. U( L8 D" ^3 S$ o0 y. D# V: X( w5 R
  14.             foreach (string s in list)7 m- U% [" g8 k
  15.             {
    ; _2 _6 d2 S6 e# Q6 H
  16.                 if (!hash.ContainsKey(s))2 c$ A/ r* c1 _; e
  17.                 {
    3 N, \3 E; b6 _  Z) K# Q. |8 y
  18.                     hash.Add(s, s);0 }9 {( z! @- @5 l% z7 k
  19.                     list1.Add(s);
    ( b  V9 L4 y; {: Q- F
  20.                 }
    # t2 G$ g0 E; h3 _* H2 V+ Q
  21.             }
    9 b. l. u8 b1 d# B/ E
  22.             hash.Clear();7 d' z* C8 O5 t
  23.             hash = null;6 k2 [* m0 L2 d8 f
  24.             return list1;
    4 f3 y* R+ [" K8 u) y
  25.         }+ W1 J/ [+ [4 F) Z3 d
  26.         #endregion
复制代码
" ^0 S* @1 H  L! I6 B& A' k, X
4 J7 C/ K# D6 h( n5 Q" ^

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
  a% y8 D! l% A
十分感谢!!!非常感谢!!

点评

缺少一个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
& A5 X( _% h- e十分感谢!!!非常感谢!!
6 @# `% t& z* R( [) g
缺少一个gethtml,用下面这个:( E$ l( ^" V6 A8 ?
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 ) S7 r* f2 g3 i0 R4 b8 U
  2.         {2 R+ j* a: O2 ]' k5 t& ^# l% v4 O
  3.             string strWebData = "error";/ {* s: Z& I* Y
  4.             try
    - i; ^5 a' i4 ?! _
  5.             {
    2 ]6 y4 d  N* [# i8 G) Z$ d% C* l  ]( X8 ?
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient   z$ ]0 }0 ~& k) I3 t% Q: P
  7.                 // 需要注意的:
    6 ]( \9 _0 o0 A, K  l
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 6 D6 e+ f5 A! K& R2 d3 u
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ) W8 }4 @$ H) z% f  B
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ' }$ K1 g' S# c7 ~
  11.                 //这样可能需要一些重载方法。根据需要写就可以了' `$ o, Z8 |9 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)");+ `+ }3 `; O0 N1 q' D
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");+ X; W% d8 n+ v2 d* O
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    5 k) n# X) P  @9 y
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ( L, Z  V6 _: l. z
  16.                 //如果服务器要验证用户名,密码
    5 B4 K: O- F% s: O4 q8 ~
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
      m$ V3 J: w1 G7 ?+ L5 Q9 U9 p4 B
  18.                 //myWebClient.Credentials = mycred;
    . X8 s$ {) Y5 q0 Z
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    2 B" G# u8 U- L, d
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    / H1 a& u6 H" A$ J9 L
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    & i4 R5 ?( C4 o! l3 _; J/ T' P
  22. 1 q8 ?; ~2 W8 Z. \: {& {
  23.                 //获取网页字符编码描述信息
    ) h: @6 o4 ?$ T. j: u8 H
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    : @' q! T! x0 ^$ E8 z, y/ [
  25.                 string webCharSet = charSetMatch.Groups[2].Value;; l( f5 E; `# f. M) e0 b0 Z
  26.                 if (charSet == null || charSet == "")' O6 e! k* w6 k& K0 l  M+ I# S2 o
  27.                     charSet = webCharSet;
    + P8 O5 S6 N1 ~0 D; r  B; n7 ]0 P) g
  28.                 if (charSet.Length > 0)2 R/ s* D" j) U
  29.                 {
    + k# C5 `' J/ m' K
  30.                     charSet = charSet.Replace(""", "");
    - [$ b. d1 \2 b3 b9 s
  31.                 }
    % Q+ m3 o. K! U, {. d, ^8 g
  32.                 if (UseUTF8CharSet)* n/ O9 s" F( X- y" x- `
  33.                 {
    * r2 v3 k5 C+ \5 K  n
  34.                     if (charSet == null || charSet.Length == 0)( v% l$ P4 j* P: I! u$ j* k* q1 X- M+ @
  35.                     {
    6 [" P: _5 e* w+ D- D& g6 n
  36.                         charSet = "utf-8";" ~0 o! n8 q- b( u
  37.                     }
    $ [4 d* \2 c, w/ n: P0 P7 O6 k
  38.                 }
    ! B7 U: e9 W* O
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    " c  n! w8 y) Z2 }
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    7 c% D) ~- }" o7 e  }: f& D. Y

  41. * N, q4 @( a3 h- l7 ?/ M. }
  42.             }
    * ]. F8 u4 m, b8 z/ o7 S, P  f
  43.             catch (Exception)0 \6 H1 B9 e9 `+ w( m8 a
  44.             {; O, e4 S) P' r7 U- g
  45.                 strWebData = "error";% G, D8 ~% s7 ~  F- L2 h
  46.             }
    - G+ e6 L" `7 T/ E
  47. ! `( `! L$ u7 @
  48.             return strWebData;
    , N. \" s3 B0 Y8 X6 y) o  N
  49.         }
复制代码

* u. w8 d' E* \4 _( z2 a' ?+ L3 C7 c; h/ Z- v' o. T# b
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-13 08:31 , Processed in 0.059504 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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