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加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9859|回复: 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 抓取全站链接, f6 V- Z5 h8 v
  2.         public static List<string> GetAllHref(string url)
    7 U( u. S( e/ a+ `. t! P
  3.         {
    . n  D9 [1 m  G: F* h( z& O1 h
  4.             List<string> allHref = new List<string>();
      o5 i' M- w3 X) B4 E- @
  5.             try
    ! U* N: p) F, `& ~$ M
  6.             {8 |$ V: C4 h' o& J( \" |3 H& X
  7.                 string strhtml = soso.getHtml(url, "", true);* E; e3 u/ Z4 H: _4 e
  8.                 if (strhtml != "error")
    . W% L; k. |4 M
  9.                 {
    ( H# Q9 ]" z9 N
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ( v  n7 V, ?0 G- V, P
  11.                     MatchCollection mc = reg.Matches(strhtml);% d5 C1 A0 q# [$ a: V/ |
  12.                     foreach (Match m in mc)
    ; q1 E3 {2 p; N! P: p* B0 B# j
  13.                     {( m$ }5 x7 O5 r' r( a
  14.                         Uri uri = new Uri(url);
    ' j0 l: H9 V0 I8 ~
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);5 a. W5 R: N0 d( P' E8 n
  16.                         string fullUrl = "";4 p1 b2 P4 r: Q
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    6 o  J( Z0 M: u. L4 |' B
  18.                         {
    4 A9 ^  t; G, }3 r# P2 ]
  19.                             fullUrl = m.Groups["url"].Value;* p9 e, t* `8 f8 H& @" O1 ?
  20.                         }
    / g9 T/ S8 d8 u( L$ n5 S3 T5 @8 Z0 n
  21.                         else
      g; b9 U# [2 P7 H
  22.                         {
    0 v; M4 M0 y! P, R
  23.                             fullUrl = thisUri.ToString();
    2 [& N( {* f1 c; {
  24.                         }
    ) _1 e3 r% h, U8 Y# `+ i4 ?" ~8 g
  25.                         allHref.Add(fullUrl);: e& |- s  Q* [
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);3 j9 X; @0 [0 [8 e7 Z
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);! h4 z' R- `7 f
  28.                         //Console.WriteLine("补全链接:" + fullUrl);$ o$ n' a* _0 v' f5 T- Y6 C
  29.                         //Console.WriteLine("…………………………………………");4 b2 N% N7 e6 I$ ~% i& [
  30.                     }0 g5 W4 E, i/ X1 B" M5 |& n$ w
  31.                 }% M4 L6 N4 O  ^. O! r- Z' B
  32.             }3 N' R0 g9 D2 ^! L8 k
  33.             catch (Exception ex)* [2 |6 A* u2 v6 O8 {* \
  34.             { }2 l5 [; a# p! w! @, _& e6 M0 k* C
  35.             return allHref;
    # q* U' l: {0 ~5 ]* M3 _4 W+ I
  36.         }# K0 u' w) W7 x  K
  37.         #endregion
复制代码
  u$ f+ K5 K. {4 Q) S0 o! [8 S* R, J# b+ h

4 X# j/ V1 Y) x; ^( {6 k) m
  1. : B3 y5 ]. }8 X( Z

  2. : ?$ [1 C% D8 B, d

  3. & m' L$ z: O+ I. F' q) ^  H
  4. #region 数据去重( a# t1 x& ^+ D% l" q
  5.         /// <summary>- m) r4 h" \" o& j
  6.         /// List<string>去重& Z* R# q) M3 V1 n: d- i- k$ R$ v
  7.         /// </summary>  S0 C. H% n( A0 ^: e
  8.         /// <param name="list"></param>  W- R# V8 I0 t" T* K, ?, I, t
  9.         /// <returns></returns>
    * V( m' Z5 J7 ^4 x! o" A% m! o
  10.         public static List<string> getUnqueList(List<string> list): d0 h/ n& g5 ?4 Q* M' D
  11.         {
    9 J" @, }8 V6 C
  12.             List<string> list1 = new List<string>();
    ) c' b. z: T. s
  13.             Hashtable hash = new Hashtable();8 a  g4 B  o" d# u! K
  14.             foreach (string s in list)
    3 y& k/ O4 g) T9 v/ A
  15.             {/ V0 K; V; V- r/ j
  16.                 if (!hash.ContainsKey(s))
    & z3 ^, ]3 s( f& f
  17.                 {# n% p* [. ]' z
  18.                     hash.Add(s, s);6 ]# ~# ~- S- r3 n& U
  19.                     list1.Add(s);  Z4 w- w6 s0 W& |1 [
  20.                 }
    # `0 K9 q8 ?* R* [
  21.             }
    & v' p5 X2 a3 \( U# K6 Q
  22.             hash.Clear();# j8 Q. z- i9 z2 |# t* s3 c7 c( k
  23.             hash = null;9 J3 e: C: i7 n  C
  24.             return list1;
    9 a4 V* N4 w' _$ E+ F) N
  25.         }
    $ ]+ J$ P1 S: n. e: D! X
  26.         #endregion
复制代码
7 Q6 S( W9 y* p5 Z6 [' z& i
5 |1 B1 B! ?; C# }

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

% [1 S, q8 K" a' d十分感谢!!!非常感谢!!

点评

缺少一个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
  i( O+ I  L8 U十分感谢!!!非常感谢!!

0 u& o% q7 U9 n; b8 g6 \, y缺少一个gethtml,用下面这个:: v8 M- ^# B! E; p
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 3 q% Z8 F0 m7 s6 \
  2.         {
    " h/ N9 R* O# B+ d( q
  3.             string strWebData = "error";
    + G$ X0 O0 p  P, w, Y" F, A. r+ L9 m
  4.             try( [8 Q/ z6 s! ^! Y+ n; x, o
  5.             {9 f+ J$ C% R5 O! Y7 v, f
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 9 w0 S; ~- J( B1 D$ {
  7.                 // 需要注意的: 9 I9 x" Z! P$ y" T! `
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 2 }# }# n. K$ L. e5 Q" ]( G
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 0 t: R/ Y4 F7 @
  10.                 // webclient.Headers.Add("Cookie", cookie); $ u; A) _3 C# k8 n
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    6 v' `' T* [( X  _, f1 e* D
  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)");$ G/ g! g1 Q& L; {/ x, T
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    " b, F( ^' f3 U+ e& F
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    * Z& d: Y: [& |
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;" @8 n( A0 |- F; m1 g9 ~  S
  16.                 //如果服务器要验证用户名,密码
    9 ~; f3 K, x6 G& o0 _
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    4 R5 c" h* F$ u% F3 u6 m% [* v
  18.                 //myWebClient.Credentials = mycred; + r/ k8 |9 r! {' y6 P! V
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    - L! ?! |* w  r6 u# R/ W  F
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);3 P6 x2 q2 b- L$ u
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);1 K1 G. z" C7 d3 @; a. y0 i* S! E
  22. / E+ `  \8 i! w
  23.                 //获取网页字符编码描述信息
    ' p' b, ?- c. k& [$ Y
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    ' {3 A! B5 J( H8 I; m3 F9 l
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    , s. T5 ~3 I4 j- M
  26.                 if (charSet == null || charSet == "")
    ( z8 \7 t  N6 A: @  K
  27.                     charSet = webCharSet;/ f* z) X8 B4 o' D3 Z" E
  28.                 if (charSet.Length > 0)3 a7 M# X: L4 I4 [  q
  29.                 {
    7 K! l1 F! y- F, t/ v2 q
  30.                     charSet = charSet.Replace(""", "");
    4 h0 ?  j6 {6 w( F8 S0 p
  31.                 }# n1 A& k+ V- e# y/ O  T9 A; ?
  32.                 if (UseUTF8CharSet)- a; a5 R$ i: X. p6 t5 F6 x
  33.                 {! }; s: Q% q* o
  34.                     if (charSet == null || charSet.Length == 0)/ y0 S0 p8 N: B2 h6 m) k: J0 |
  35.                     {
    * k3 j7 u5 p; b( _
  36.                         charSet = "utf-8";# ]9 e( I) @3 q7 B1 J* C$ b
  37.                     }0 \/ o5 I2 ]& T% D1 L2 p% C
  38.                 }
    ' J* b1 W+ B; ]( O( K- P  b, {9 L: o7 E% C
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default), I* M' {0 a/ W7 y4 R9 m- V9 e3 p
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);0 V& Y) q. b: w; g7 r! g- |0 ?; Z
  41. + u3 w, h# h* G
  42.             }% `8 p( ^- R; ?- P4 y0 Z+ W* y
  43.             catch (Exception). ?0 c1 U& T: Y6 \4 k: U
  44.             {
    6 \. O3 ^4 a+ s; ^
  45.                 strWebData = "error";' Z2 W: I: j0 A" l: Y' c
  46.             }& d4 u5 `: m2 \! ]
  47. 0 _2 ^+ K  I2 j, s( g/ F* o5 H4 q
  48.             return strWebData;; F' m7 k4 n7 E& ?) C
  49.         }
复制代码

; d9 _" {( D! |8 _7 m2 r/ {' c' X1 e3 w( U6 q
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-12 01:27 , Processed in 0.052689 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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