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充值
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多高品质·稳定高速纯净IP FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 
海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9902|回复: 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 抓取全站链接7 Q3 L* E3 I( ]# g2 i4 y
  2.         public static List<string> GetAllHref(string url); p4 }8 l1 C9 T& U+ ~  J
  3.         {- g3 J7 H" i1 m
  4.             List<string> allHref = new List<string>();
    # r! {% X' u6 n& I) |1 M. ~
  5.             try
    . |6 I8 V/ `$ H, ^+ [- `; Y! O2 J
  6.             {" j; \8 U3 B2 R
  7.                 string strhtml = soso.getHtml(url, "", true);- [4 d  ~+ U+ ]# O7 y- |2 T% ?
  8.                 if (strhtml != "error"), N8 l$ L6 N( D5 d
  9.                 {
    " W0 T4 [  [+ r# p" A+ }
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");! ^! ^) L  ?% E% `
  11.                     MatchCollection mc = reg.Matches(strhtml);% E& v( {8 I3 X$ H
  12.                     foreach (Match m in mc)/ {  n4 e- x2 ?& X+ m1 i2 N2 d
  13.                     {5 L3 }* |& U* o# |( F* J
  14.                         Uri uri = new Uri(url);
    ( e$ U& \8 W" O/ F9 L! Z+ E; g
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    7 o- Z5 S( D" C" p' H
  16.                         string fullUrl = "";) \( `$ i# X- j/ `! G8 E
  17.                         if (m.Groups["url"].Value.StartsWith("http")): ^/ I6 Z2 L0 |: }2 ^
  18.                         {/ F  B. }% X, f' X: N# t
  19.                             fullUrl = m.Groups["url"].Value;5 W# q* W# @3 ^$ w
  20.                         }# I7 d# Q, W9 ^+ ]1 O# J
  21.                         else
    % R7 t8 ?1 O4 E: F
  22.                         {
    ' k, N; V; c* Y$ \, g& L  j6 H
  23.                             fullUrl = thisUri.ToString();
    1 X" R9 g; ^7 N: H7 K9 n
  24.                         }) [; y2 a, J( S6 F8 A5 m) o: A- [' j- Z+ u
  25.                         allHref.Add(fullUrl);
    - _; L% I% q& r3 K
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);- f" c: Q5 ?9 Q/ m# j+ {( u) \0 [
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    * w/ q7 q$ H, F
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    7 S3 s. F& \! O5 y  Y  Y6 {% N
  29.                         //Console.WriteLine("…………………………………………");
    2 \1 j: Z7 J: w& F. R  L
  30.                     }
    9 P0 a! k3 u& v" `4 n6 V
  31.                 }
    / G  ?3 A3 y; |% M
  32.             }
    2 u7 ~$ `, {9 g2 {0 L  ~2 K
  33.             catch (Exception ex)( ^0 I  }6 Q3 H) r- Q1 R$ a. G
  34.             { }
    ( q+ Y# d2 ^# `' v, a! V
  35.             return allHref;. |/ [- s6 x' J+ B. `( g$ r# L
  36.         }
    / ~. e2 k- k$ [
  37.         #endregion
复制代码

: u* r$ C6 V  \& v, F3 V1 P/ O3 e) |1 R1 k& l) l+ M
  1. + X8 @8 r( y, b; \# Y% c
  2. ) h& G  H1 a' ]3 M

  3. 6 |/ N3 q+ _1 k. M) ^2 @% Q( U% L
  4. #region 数据去重8 F* s  s; q' f! s. I, W; g
  5.         /// <summary>" m5 z3 ^0 |/ V6 j6 _6 d4 H' V2 `% c  k
  6.         /// List<string>去重
    , ^! g4 @% `+ q# W- }
  7.         /// </summary>
      G1 _& c- T1 F' `5 x
  8.         /// <param name="list"></param>
    # J; \: l4 |9 C) I6 O  c
  9.         /// <returns></returns>
    2 r, t4 L3 K0 X) q4 g
  10.         public static List<string> getUnqueList(List<string> list)
    : d& S" j) ]" Q
  11.         {7 Q5 |& w  V2 n* t) B
  12.             List<string> list1 = new List<string>();# A- q% Y; G/ ?# p3 ]) P
  13.             Hashtable hash = new Hashtable();
    7 f  e0 F: @3 j% S
  14.             foreach (string s in list)
      ~, u) ]$ [' R, U+ M. y
  15.             {
    ; N5 C- K% s0 v! a8 Z3 L4 J4 k1 K* _
  16.                 if (!hash.ContainsKey(s))9 u5 Q. m4 q2 q: S. ~
  17.                 {' G7 x4 F% M0 B: f
  18.                     hash.Add(s, s);
    " d1 x9 z/ N2 u* F# U" |) d
  19.                     list1.Add(s);
    9 x1 q# a+ N# t0 E
  20.                 }/ U" E/ g: E! h: R& p. N6 {
  21.             }
    2 M% Y8 j2 r- f5 j
  22.             hash.Clear();
    9 ~- ~" U5 v' D+ M+ z; ]' J. r9 ?* a
  23.             hash = null;! U- Z; R' \0 C0 }
  24.             return list1;
    8 {2 ?2 ~- ?. z
  25.         }) ?* D1 p2 c6 R
  26.         #endregion
复制代码

( g& x8 a3 t9 @  C% v) m8 s* X6 B* i

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
: F9 Z0 u( Y* D! m
十分感谢!!!非常感谢!!

点评

缺少一个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
' S: n  L2 J" E$ y* k- e$ s十分感谢!!!非常感谢!!

! X4 o0 y) B0 i' a- H2 R缺少一个gethtml,用下面这个:! J' ~7 o7 G. v* X1 E8 @( y$ w
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    ; A7 u0 b4 J+ ?* y4 m, Q
  2.         {, L( ^5 B0 a% R& K+ `9 r
  3.             string strWebData = "error";
    ; {4 [- m- L* `- l- B3 @2 S" l" {
  4.             try. N( E9 A4 J: m, ^% \/ X" o9 S
  5.             {
    1 G- n3 e% r+ T+ q9 B4 H4 Z
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
      K- R( Z& z- C9 M) U- C0 W( s
  7.                 // 需要注意的:
    ( B6 A" X7 v) H' a7 ^: p
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 % ~: C. [5 l' _# k% v
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    : D, ~2 ^2 N6 r3 ~$ v$ T9 k
  10.                 // webclient.Headers.Add("Cookie", cookie);   u9 F1 i* @4 E) O  B1 |4 r
  11.                 //这样可能需要一些重载方法。根据需要写就可以了# P. H: l% c+ O
  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 w5 B" M4 z: V2 c0 ]; J1 o
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");4 T  E. p5 J! T: R
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 8 E7 ^' ~0 j3 w# v% @$ _
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;9 L/ p# c  }) B, F3 r, A
  16.                 //如果服务器要验证用户名,密码
    6 G% A8 d! k( e
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); * }$ R" g7 b* r; ^% }6 V3 f
  18.                 //myWebClient.Credentials = mycred;
    / {2 @6 V* t  j' e7 k  B
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 1 S/ G. ^) A; j& P# T$ {# x- Z8 Z' \1 V$ c
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    7 S: h3 I* U- A& g! e( R9 S
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    1 w+ {9 b% Z0 |2 K& `, _
  22. $ v3 R. p" b. Z' @
  23.                 //获取网页字符编码描述信息
    ; Y- G0 v0 W$ A" v
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    9 P+ j! Y( S8 {5 |5 ~$ C; m1 H
  25.                 string webCharSet = charSetMatch.Groups[2].Value;6 M7 F9 r! a. G2 i  F8 [7 q7 k: a
  26.                 if (charSet == null || charSet == "")8 A9 k; g5 h- x6 S" T
  27.                     charSet = webCharSet;
    * e  ]  A7 k4 B0 p% d* v/ D# I
  28.                 if (charSet.Length > 0)
    4 B1 P; @5 v7 V1 \2 z- d
  29.                 {7 K, k' G" J" V5 N* b4 M; ^5 \; A
  30.                     charSet = charSet.Replace(""", "");
    9 B* y7 s1 r7 E' O. O
  31.                 }" K+ y: N& f9 h+ E
  32.                 if (UseUTF8CharSet)' ~+ G! N, g3 k, [3 t1 U( J
  33.                 {4 R6 \) b5 y# O3 V4 s" g4 C
  34.                     if (charSet == null || charSet.Length == 0)
    4 i9 [' j3 r( _( P! D
  35.                     {
    % n/ ^0 h" N- l4 d7 N' L2 I8 `
  36.                         charSet = "utf-8";
    7 l4 O% g; Q$ r8 X, d
  37.                     }
    ' M+ t+ W3 }! _! u- R
  38.                 }
    - _$ c8 b* W: I0 u+ t4 q1 R
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)- R$ }$ j9 q8 c/ R1 S" {, R
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);4 ?! O8 B0 O. U1 c9 ~/ p1 o
  41. ! l) p. e% M' a0 P
  42.             }
    2 U8 T5 c; ~; ]9 v9 T
  43.             catch (Exception)6 k4 c7 e  J% S- Y" ]4 g1 P
  44.             {
    ( S* e3 ~8 n: m
  45.                 strWebData = "error";
    6 Z3 v- I9 A+ q: B6 |3 a
  46.             }
    5 I- M& G$ R/ M, G, A0 o( A& s+ ~8 k
  47. 8 _2 U/ @2 {# m% d( [
  48.             return strWebData;
    6 D7 B+ k9 K) Q. {0 ?- A# l
  49.         }
复制代码
4 {: a, C; o, k
, C) s3 f) X) L5 e: ~& U% |
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-22 15:43 , Processed in 0.053107 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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