AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
⚡️AdsPower:安全不封号,高效自动化Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理
FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9989|回复: 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 抓取全站链接$ D6 h& ^; O3 w( u1 |* Z; F
  2.         public static List<string> GetAllHref(string url)5 o  J+ G! z/ v  A8 b6 Q( L
  3.         {, p+ B* a, m( {% k% V
  4.             List<string> allHref = new List<string>();3 U/ o3 A  G0 j4 p
  5.             try' T) C( f. c* ]( {. G1 {
  6.             {
    5 D+ B3 h+ h# p
  7.                 string strhtml = soso.getHtml(url, "", true);* _/ L5 m: ?5 \& i2 p; w
  8.                 if (strhtml != "error")
    , U! Z6 B0 Y) l: O  N" ], @3 ~
  9.                 {
    % V% x5 v+ i1 B( \6 C
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    / S! K0 w" i9 o# G, o5 ]" a( I
  11.                     MatchCollection mc = reg.Matches(strhtml);% P7 B! S  h8 ?' j6 a' t/ ?' L# K
  12.                     foreach (Match m in mc)* x, [" ^- p# T* V& r5 y, X
  13.                     {/ {2 Y, c. K9 c
  14.                         Uri uri = new Uri(url);; h8 g# Q# p  w4 }
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ' K4 x: w+ q+ l% B7 j  Z: i& y1 x
  16.                         string fullUrl = "";
    ! o. D1 a" c2 ~! S( ?& d6 ?1 O& N! B
  17.                         if (m.Groups["url"].Value.StartsWith("http")), U  Z1 M+ b; \, d% `0 U& H9 |
  18.                         {+ e' z9 @- G, d' R: y; U! ^
  19.                             fullUrl = m.Groups["url"].Value;2 m( ]! Q9 H# Z! c* S0 j" h5 `: y
  20.                         }0 r, n  m0 v, I' f1 ~
  21.                         else
    : K8 t  D9 c+ d* |" I% y$ H
  22.                         {
    2 f8 V' `6 ?1 M. y6 Q+ o
  23.                             fullUrl = thisUri.ToString();5 V( F! H' u) A2 g/ p- t, t. u- z7 }
  24.                         }2 J, x3 `# `# W# M" x" N- ]* u! v$ |
  25.                         allHref.Add(fullUrl);2 O9 r4 z, D, [
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);- s' m- q7 ], L% z
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    # D! e# [* T, f; P4 V9 A. T
  28.                         //Console.WriteLine("补全链接:" + fullUrl);9 I8 A; ~3 a; @% h) K
  29.                         //Console.WriteLine("…………………………………………");
    9 N, n( Y0 m9 {/ T
  30.                     }
    , k( P+ p7 P. y. C- P& `# L; ^
  31.                 }: N' G' i" R! Q7 y) B7 T- m
  32.             }* o/ \1 r! _' J8 v, U
  33.             catch (Exception ex)0 k( o; {. C, c
  34.             { }5 `2 q, h3 a+ l( I! `. B
  35.             return allHref;& t) N0 t6 M2 j3 m5 ^8 ?
  36.         }+ _4 w# x( l; a
  37.         #endregion
复制代码

( Y) Q" N) }0 i& [: O& ~/ O" l8 A
1 H" y" z# d$ c

  1. : P( f6 ~; d/ W3 x; G
  2. # h3 C; D7 ~! |2 A7 m/ D* b- M
  3. 4 x9 u( `# L; [3 r  I3 D( v
  4. #region 数据去重
    ) a/ @/ P/ x! R
  5.         /// <summary>5 U! M+ ^1 {+ F" I
  6.         /// List<string>去重2 V- H7 N- y- b' ?$ A: c1 ^4 R& \
  7.         /// </summary>
    6 O/ H- C* _. e4 o) ~% m& x" w+ _' D
  8.         /// <param name="list"></param>
    ; d4 M7 M1 l! {, [% Q: `; J
  9.         /// <returns></returns>
    ! W3 x& f2 K! d$ s8 h8 Y
  10.         public static List<string> getUnqueList(List<string> list)
      h) ^5 P, d7 X$ O+ x& u+ k) Q
  11.         {; |! [6 }) Q% l# x* h* Z, r# t" @
  12.             List<string> list1 = new List<string>();
    - J3 S3 A) g9 l% d
  13.             Hashtable hash = new Hashtable();
    ! S8 b6 U+ M2 Y# s  K& Q7 Z  k& a
  14.             foreach (string s in list)/ u+ I6 A  r! }  c  m/ y" g/ C
  15.             {! E8 U- |* a+ P$ @( l
  16.                 if (!hash.ContainsKey(s))
    # V. c3 }6 I, Y' U1 ~% y/ [% H
  17.                 {
    $ Z5 u: R0 `+ {: O9 u8 w
  18.                     hash.Add(s, s);
    ( f; k) H; `& H+ v% ~# N
  19.                     list1.Add(s);
    1 t5 E# Z2 C0 I. h
  20.                 }& A. J# H# u* [9 _( r6 N; }0 J
  21.             }
    , O# L+ p# \, @" e+ v0 t8 `( q
  22.             hash.Clear();0 S9 o* z7 h$ p0 ^
  23.             hash = null;
    ; R; f: I' \; `( e% A+ T+ a. G
  24.             return list1;
    # |8 A- `& W/ t; @, x9 ]" R
  25.         }
    6 V% I: h) L$ V9 q6 O1 Y2 J' R
  26.         #endregion
复制代码
  k8 |. r" q8 |7 r0 t2 K3 m$ t
+ h$ _7 E; a4 H9 o) r2 V  s$ ?

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
- P( d# G) R4 n9 y
十分感谢!!!非常感谢!!

点评

缺少一个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
& e* `. T2 s4 Y4 {7 g( _, j$ h十分感谢!!!非常感谢!!
" f( s7 i( \% t9 }. R
缺少一个gethtml,用下面这个:$ j+ C% g& p6 k  w/ A, ~
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    , ?5 j. f' P1 k
  2.         {
    1 U4 U; v, k# u  u
  3.             string strWebData = "error";; M* \% J$ E2 P
  4.             try
    6 `0 w6 o+ F! e8 ^; I! L1 {
  5.             {$ u; D. {0 X. x& V8 E7 @
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    - h7 p5 @" K- D7 J3 @
  7.                 // 需要注意的: 2 ^# z4 A" x# ?1 t
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 8 i8 I8 w* O  ]# r9 w0 e, s' \- Q# X
  9.                 //这是就要具体问题具体分析比如在头部加入cookie / Y# j  K' u0 n6 L
  10.                 // webclient.Headers.Add("Cookie", cookie);
    8 b( j' T7 n1 }! q7 o
  11.                 //这样可能需要一些重载方法。根据需要写就可以了1 _1 z! ~# j9 {7 A
  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)");
    $ T: d0 l: F  c, T8 M: i# h
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    - d7 n* a( c, K/ |
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 : l$ N7 V$ F* R6 r6 R6 Z
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    1 C* @+ l! J6 ?/ Q3 F
  16.                 //如果服务器要验证用户名,密码
    8 D! d2 t( v; R$ Q2 P, ]% |2 E
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); - f+ A2 @# ?: F1 C3 o- V
  18.                 //myWebClient.Credentials = mycred;
    + a5 D" D+ E' F. ]" z0 }3 U3 M# n
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 5 B% w4 g1 `9 ]+ v1 {# l% Z/ A% q
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);4 n5 ^2 h8 R. Z% b4 C# h
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);/ a) y4 c. o4 s- b

  22. - ^) R! u! _( I  d
  23.                 //获取网页字符编码描述信息
    ! [; R: ^2 f  e3 B# T
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);, W9 Q. U) o; V8 u  m: G/ x. }
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    6 c4 F( a4 _( @, h8 L% f
  26.                 if (charSet == null || charSet == "")% n5 y3 y% y$ K
  27.                     charSet = webCharSet;$ u! T; l  ~6 _/ ^) ~* D
  28.                 if (charSet.Length > 0)( E. y" \/ C- r0 Z4 N
  29.                 {
    ! C+ M  b+ ?6 ?. w0 W; ^
  30.                     charSet = charSet.Replace(""", "");* D2 E1 H; G" e
  31.                 }. K# `0 R! J% V" I' e$ s" [
  32.                 if (UseUTF8CharSet)( P6 E* i/ Q3 }- g: r+ m
  33.                 {( a" ^- U1 D: T# G* J% I0 z8 e0 w
  34.                     if (charSet == null || charSet.Length == 0)8 L3 y& Z! z4 M$ Q0 y! z& t
  35.                     {; S' {  G- T7 r* Z
  36.                         charSet = "utf-8";! I& h  M' y( f: W
  37.                     }
    : n( ?& ^7 I& N% _# x& A
  38.                 }1 M3 u1 \. N2 p! _5 k" [  E
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    . W' T3 }: k9 b: J6 a
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);8 V" X, ^5 R0 L" N2 Z' D
  41. $ i. v3 e) I7 ]9 d- j' y  ^1 {
  42.             }5 x, ]. N% D6 a/ I
  43.             catch (Exception)( J( O& k3 A1 k( w$ u7 }. M9 B$ |
  44.             {
    4 ^8 R: m& f% l
  45.                 strWebData = "error";* ^6 l9 `8 I; ]! x8 I
  46.             }
    4 V7 R: V' y9 o+ V6 \; H0 M8 P/ L5 a

  47. ! A4 v  K1 k7 ?
  48.             return strWebData;( Q+ A: \9 h( Q5 b
  49.         }
复制代码
9 D% ?2 c* e5 z. Q9 V
" E3 W* g% y4 j
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-20 11:14 , Processed in 0.054803 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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