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/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%
DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9934|回复: 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 抓取全站链接) d& u- d* c+ b9 }2 L# p( c; \
  2.         public static List<string> GetAllHref(string url). t0 i2 o/ B' E) @0 c/ y5 n$ ~
  3.         {
    9 N+ S; Q/ k$ J& p
  4.             List<string> allHref = new List<string>();! B9 i7 K) f: m4 ]" X6 _
  5.             try
    ; y- N9 w; p. J( j
  6.             {
    7 h: L" V$ {$ j$ N$ y
  7.                 string strhtml = soso.getHtml(url, "", true);4 V5 L& T4 G) a' C, O4 d& H
  8.                 if (strhtml != "error")7 f# U- Q; `+ A$ _
  9.                 {
    $ d2 |# q) w! S
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");/ D( o; K# |( y/ |. {
  11.                     MatchCollection mc = reg.Matches(strhtml);# S# u- D# V$ E7 i* n+ _" o
  12.                     foreach (Match m in mc): U; i% |8 h: b. Y4 f5 v; J- Q
  13.                     {
    : G8 k% s( [& x0 @% `3 f- ?& p
  14.                         Uri uri = new Uri(url);
    ; W0 N2 B+ Q7 j) j  F2 r
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
      v* T( A1 |4 s
  16.                         string fullUrl = "";1 T# p# o. }) c" b6 p+ h
  17.                         if (m.Groups["url"].Value.StartsWith("http"))% L  V1 v! y5 @' z8 M
  18.                         {4 V/ g7 n) u2 g( k4 w
  19.                             fullUrl = m.Groups["url"].Value;
    5 R" ^! [4 @7 }) t
  20.                         }1 n: `5 x# _( X& K1 N% _
  21.                         else$ w+ A( |+ v, F3 G- h, E* N! |
  22.                         {
    1 A) P6 z& |" ^, _8 m3 [: r1 F* v; W
  23.                             fullUrl = thisUri.ToString();0 H' A- T' R/ I# o: N& [
  24.                         }
    * F) W6 a9 d) Z/ i6 b
  25.                         allHref.Add(fullUrl);3 v( @: q# y8 Z7 v+ y, E
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    4 |$ \2 R. r" P1 j8 _. X$ T
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ! \' u0 n8 y* W
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    $ U' R9 L- O/ a& k# S
  29.                         //Console.WriteLine("…………………………………………");8 F- ~" X2 e; R3 w& d
  30.                     }. i+ E4 ~% w: x1 j4 h/ X! d$ n
  31.                 }
    ( i2 m7 B" T0 [3 R0 o7 o1 V7 G
  32.             }/ v! `) L; X& v$ x$ @; r) z* H
  33.             catch (Exception ex)# U3 L  R* G$ N( p4 {4 I4 m
  34.             { }
    0 p$ E  z+ I' c: _
  35.             return allHref;$ }7 T  R, Q2 {4 Q, a$ Y" W) s
  36.         }' R6 ~+ L# j- U) T
  37.         #endregion
复制代码
0 d( z; u! M2 \) Z0 @3 y
$ |* `% t# \' F
  1. ; H6 H" F1 b: g9 s
  2. 6 z, I+ ^2 u1 @  u" ~
  3.   C$ V' B0 f1 z& W; E1 R
  4. #region 数据去重$ w: F% \  C1 M5 f
  5.         /// <summary>5 m- F: D" [0 R2 T3 G
  6.         /// List<string>去重
    ; i7 `: V0 x  v* V& n, T
  7.         /// </summary>; ~2 @# T( K5 z) K3 H( Y
  8.         /// <param name="list"></param>
    5 {! {" q( V' f" n: v
  9.         /// <returns></returns>
    2 T4 c. [; j5 k# a  D8 n% A, M$ D0 J; p. ]
  10.         public static List<string> getUnqueList(List<string> list)* u* |) a/ E4 U: Y1 b- `: I1 m
  11.         {$ _( y% L% K" t* D, R( M$ e
  12.             List<string> list1 = new List<string>();6 ?; F" d9 z' \) ?
  13.             Hashtable hash = new Hashtable();
    5 A) {; ^2 }& g5 n9 d6 ~' D7 b6 D
  14.             foreach (string s in list)
      V3 i) X4 \! n7 e8 @7 V
  15.             {4 Z5 H) J& J  P4 ~7 y7 E
  16.                 if (!hash.ContainsKey(s))6 W$ B0 g3 c  i! g
  17.                 {( _( v& q0 q. h6 X% _
  18.                     hash.Add(s, s);
    0 ^8 A3 T! F: N& G5 l  m
  19.                     list1.Add(s);
    ' U) L4 E: p6 q: H; P
  20.                 }
    ' u$ b* R3 }  k7 t" w5 V
  21.             }
    7 ^8 D1 P; x0 ]  U* d
  22.             hash.Clear();
    : Y0 {8 x9 v. w* M5 d8 G
  23.             hash = null;
    ' _! a: U; b6 B* m0 V
  24.             return list1;
    3 y5 }$ t0 Y& R; v
  25.         }
    9 Q7 r2 E$ c! }6 d8 J
  26.         #endregion
复制代码

- L* R5 q* M6 x- q  ^. x9 j1 Z' }' A# E6 l

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

/ i; |0 b" N' ]% ~0 i) d# l十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:204 k* {) x- w' ~, s' H7 ]) g
十分感谢!!!非常感谢!!

( C* s5 x0 m' r4 _$ B缺少一个gethtml,用下面这个:
5 ~  S3 q2 j0 O, X( ~
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 1 i6 w7 r1 R. \) j! T' P: d
  2.         {- M( X8 q( H  i& t
  3.             string strWebData = "error";5 j+ r  B/ e' q- p7 c, g- b" r
  4.             try
    ' h* `  ?1 p0 e
  5.             {, R4 v$ O' T+ G: a
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 6 p$ `8 ?5 a. i9 s4 Y
  7.                 // 需要注意的: 8 N, P5 O" V( L: l. G6 s
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    / w$ L' ?& D8 j4 r2 v+ b, I* V/ Y( J
  9.                 //这是就要具体问题具体分析比如在头部加入cookie   M" |. \4 R! C# i
  10.                 // webclient.Headers.Add("Cookie", cookie); 0 K, T+ z3 Q6 x
  11.                 //这样可能需要一些重载方法。根据需要写就可以了7 o" g8 p  f# _( z8 P
  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)");
    / y) ]7 Q- c8 \4 [5 a2 |2 L8 Q
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");; X, S7 M. o. G2 d$ W
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    # v6 Z: o! o6 }
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    * D3 D, i0 M6 r
  16.                 //如果服务器要验证用户名,密码
    + O& s% v7 G% V4 N4 u% m
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); # o! h8 n* ~6 h: f' y6 W- }. T$ X% C
  18.                 //myWebClient.Credentials = mycred; & D! R9 `/ W' r' `
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    5 `9 u4 q& D% f8 s1 i$ z) q
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);0 D3 }; ~* d0 C8 o
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);( L: P: o4 q! S2 a5 b7 u: k

  22. 5 Q) }. _. |/ k5 G8 ~5 K
  23.                 //获取网页字符编码描述信息 . g1 s8 W& Z! d2 J7 d
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    : y4 I# `: s; L. X& @- _6 a1 s3 J  g
  25.                 string webCharSet = charSetMatch.Groups[2].Value;6 k0 s0 S3 I6 ]* I/ Z0 _# ~
  26.                 if (charSet == null || charSet == "")- _7 u* m& T* ]' u
  27.                     charSet = webCharSet;! a  D  A3 a2 T) \. ~0 U
  28.                 if (charSet.Length > 0)  S) M$ m6 b' P, @/ ~  r
  29.                 {
    / ^! r3 S8 ~4 v8 q( |1 Y
  30.                     charSet = charSet.Replace(""", "");
    % z' c, s) w& U8 f1 Y" {! F
  31.                 }
    0 V+ S' t1 v. y7 h- q# Q
  32.                 if (UseUTF8CharSet)$ d9 B2 H0 n% ~2 M
  33.                 {# F5 B; F& s4 c. e4 W* k
  34.                     if (charSet == null || charSet.Length == 0)
    4 u7 F' X. W0 w  V  o+ ?
  35.                     {
    * e, _4 _* F+ _0 W4 r; _8 m1 u( @
  36.                         charSet = "utf-8";
    + z0 W. c% O& s$ W
  37.                     }
    " e; {) p: Q3 @& P7 _: x
  38.                 }* O  H& d7 ?; w$ C3 ?  Q
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)5 c9 `; n4 k( Z- o  G6 q( n2 |; p
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);4 t* |2 T& u6 I$ Y
  41. 4 S/ f% o& [! }) b% j! ~
  42.             }  B  c/ a0 i' z6 T* f
  43.             catch (Exception)
    ; K; C/ w, |* w6 r: R2 i; L
  44.             {3 Q# p& S( w$ ^% u
  45.                 strWebData = "error";
    * T# B8 u- i4 f
  46.             }# i/ F6 u1 O* F5 T
  47. 3 x# U' s: Y; m. T/ B5 j( v
  48.             return strWebData;
    # n8 J; R, W) F- x9 Z
  49.         }
复制代码

; }: F( M3 i" I/ F, F
' H1 T( N3 t2 v( J/ r8 S$ c
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-6 19:47 , Processed in 0.052481 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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