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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9781|回复: 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 抓取全站链接; O5 ^: b  x, Y' W: B
  2.         public static List<string> GetAllHref(string url)' P, h# Q  ^! P' ^: v3 B1 r7 G
  3.         {' F3 K8 x; o1 e0 D  I7 h
  4.             List<string> allHref = new List<string>();$ C* }. ~8 V* q* `, v
  5.             try: @  |7 V! Z: q7 [2 ?$ l7 t
  6.             {. |8 L' r: K' u1 X  R" K
  7.                 string strhtml = soso.getHtml(url, "", true);2 v$ e4 m6 l7 Q8 D, N- V
  8.                 if (strhtml != "error")% g; d( G1 i! y3 A; J
  9.                 {
    5 \! G4 g, n. G4 [) T6 q
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");* f3 m/ X. c( b, _
  11.                     MatchCollection mc = reg.Matches(strhtml);4 A2 [3 h0 {. ?3 C
  12.                     foreach (Match m in mc)
    / v" W. @0 l& M# B
  13.                     {
    / i. b0 _- _0 {0 m7 i* v% ~( x4 a# R/ C
  14.                         Uri uri = new Uri(url);
    ' r) q! J, n( m8 v& v7 D: K- C
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);. v7 c& z# r2 ~: e8 K# h
  16.                         string fullUrl = "";
    * v! T9 a& `# A( o+ h( Y! r% M0 F9 D
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    & A6 P' n  @# \* k' D5 w5 |  P* J1 E
  18.                         {
      ^, j/ r- ]$ W7 v: r/ O4 b
  19.                             fullUrl = m.Groups["url"].Value;% x3 O9 K# I1 T6 w  B. Q4 n
  20.                         }
      I5 N( Q- D; f# {! J  _8 V
  21.                         else
    9 M3 s1 I8 t6 O3 W' j: x
  22.                         {
    1 s  t5 o/ `7 W1 ~/ y% u0 B
  23.                             fullUrl = thisUri.ToString();
    , {5 ]9 c- o; Y) }% z6 A3 F: u$ H* P
  24.                         }
    9 Q5 W# j4 n6 C) a5 E. X
  25.                         allHref.Add(fullUrl);
    ) y( X2 n  v( w* s3 M0 b4 L
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);: @; x6 w- V& m
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    / K0 S4 E- W' c
  28.                         //Console.WriteLine("补全链接:" + fullUrl);4 j  U  j! M$ V: w4 M
  29.                         //Console.WriteLine("…………………………………………");
    0 U: i( \( A" a2 `3 F$ n: v3 s  e
  30.                     }
    0 X1 g' \; @7 q. |0 E
  31.                 }( W- Y. J- G- m
  32.             }5 k( W: a& z, R$ O
  33.             catch (Exception ex)
    ! Q+ t& X/ ^1 o5 N
  34.             { }
    : f5 \  ~) E5 w' D
  35.             return allHref;
    ! o, ^! d% {/ f! y9 d' q+ d, I. c7 K
  36.         }
    $ e1 a: X8 K/ ^: u: S2 f3 W3 G
  37.         #endregion
复制代码

# j9 A( k$ j4 m- H0 ]% v* }. a' X8 r# \5 F$ W3 ~
  1. 6 s5 \6 d! c: C8 g0 b0 k

  2. & H9 {5 x, \( i/ |
  3. $ }: S. i9 T0 D0 H) e+ t
  4. #region 数据去重
    ; e7 H) C1 N- y5 ~$ U& n
  5.         /// <summary>" h) z$ _! Y& t
  6.         /// List<string>去重2 T, D% s* m( D* v4 i$ P: c; `4 J
  7.         /// </summary>9 L  q$ O, G8 j& H* {) R
  8.         /// <param name="list"></param>0 }5 d: F$ J) @/ _
  9.         /// <returns></returns>
    * Z6 S/ ^# u' f/ o; }
  10.         public static List<string> getUnqueList(List<string> list): D: V8 o- m; X$ r7 G
  11.         {% `" q# p  ^) a# ^0 I
  12.             List<string> list1 = new List<string>();
    % J. T2 s' J9 w/ N
  13.             Hashtable hash = new Hashtable();
    ' R( u" L& h% Z4 J
  14.             foreach (string s in list)( k1 s$ C) b: i# G( C6 _
  15.             {
    . E( \6 E; ]# {) W
  16.                 if (!hash.ContainsKey(s))7 `- K( J: @$ d6 E& I' o
  17.                 {. `, k7 F0 l! O; V4 d: Q1 f
  18.                     hash.Add(s, s);
    * m) \2 e& ^% S8 o
  19.                     list1.Add(s);
    + @7 @3 ~7 N+ _2 y; v. w8 E# V
  20.                 }8 Z& A  c  P6 Z1 o
  21.             }
    3 L7 z: C2 X8 b  m
  22.             hash.Clear();+ ]. t& l+ @" W) M
  23.             hash = null;
    " Z  Q' {# t: _1 N
  24.             return list1;
    0 Y5 p/ l- J4 ?' O
  25.         }: m5 v0 R7 `2 I7 _3 f
  26.         #endregion
复制代码
% n, J( f. ~! f  Q) h
. L$ l0 a; R& l2 f/ `

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

" b# \/ [- h" x十分感谢!!!非常感谢!!

点评

缺少一个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! b& V, ?+ x! q3 h1 P
十分感谢!!!非常感谢!!
/ m; w) O2 A, i4 a7 z+ r
缺少一个gethtml,用下面这个:* u3 i6 ^% f- K. a
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 ( X+ h& M# t. V" f# F' c) T* |5 F5 j
  2.         {
    1 b9 u" a) D7 T/ i0 t9 `
  3.             string strWebData = "error";
    ( y( J9 [, v% J- a  i
  4.             try/ E  F8 _* O) D: O2 a
  5.             {
    . u3 w8 b  L: v8 P
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient * @2 u* [/ r5 k1 ~; f: D
  7.                 // 需要注意的:
    ( M2 K5 l+ t8 p4 o! n2 e
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 # m, M+ n. m) d2 f9 ?+ N
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    6 }2 `/ v7 V* [+ q% u/ r- k, l
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ' j6 d( m) f& Y: q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    # Y8 b2 b4 g  x) I
  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)");9 Y1 Z; R) U/ Q8 \: g& p# N4 B7 C
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");( s4 ^" n9 n8 r( l; U8 D
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 2 E! b& S" p' `/ s/ t; a7 C, V
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    3 b( z& F0 ~( S3 z( c7 j2 \
  16.                 //如果服务器要验证用户名,密码
    / m; }& s! I* z3 q
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    + g2 \9 d7 G" D! M" l& S
  18.                 //myWebClient.Credentials = mycred;
    * ]  J5 q% _+ r, t" p  G
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    - j4 s' h. j, T
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    . W$ P, i/ x& w6 l
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    # p0 n! c2 A& F6 C2 h) H
  22. 3 S' [% u; D4 I# ?/ ?
  23.                 //获取网页字符编码描述信息
    * R9 r/ L  Y' Q( W3 w3 `/ O
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
      L# n7 s% W5 J; n9 L* |
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    1 p  ]% o# h+ j0 K! L+ ^
  26.                 if (charSet == null || charSet == "")
    : S" j$ Q/ h4 \  q5 h- l
  27.                     charSet = webCharSet;8 S4 h% X$ {9 W. S1 R
  28.                 if (charSet.Length > 0)/ I2 X8 q& d# y7 a# |
  29.                 {. i7 W8 l. ^( X/ M( ]0 Q% F6 d% [4 j
  30.                     charSet = charSet.Replace(""", "");
    # h' u' k4 u% k# b; n, D1 U
  31.                 }+ m& y* _1 U9 u. [
  32.                 if (UseUTF8CharSet)' V5 G) E. h* h5 w
  33.                 {' i' h/ K2 m. r8 Q( c. A
  34.                     if (charSet == null || charSet.Length == 0); P% U0 i- }4 N9 F- \+ U
  35.                     {
    , v" y) L2 a' [
  36.                         charSet = "utf-8";2 S1 y! q) f1 T! v
  37.                     }; @! y, b3 j- Z# s* m( L% g( }+ m+ w
  38.                 }; F' k2 c$ \! i# T9 q+ }, Y9 B- A
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    & w  v4 W- A' g6 b6 Q0 s  z0 a
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);: Q6 V6 I" t* C- [# k- F6 s

  41. : c( u2 ^4 R. o) A/ a
  42.             }% A! w# W5 o/ w
  43.             catch (Exception)
    * L; `- A$ j5 |& A: c7 C5 t' {+ V
  44.             {( l; O* V6 j1 k+ c) R: K! o
  45.                 strWebData = "error";+ |  t% E  N5 N, {
  46.             }
    , F5 y7 [; E. y) u; W; m9 j

  47. * v2 c  W3 c. w; s0 G6 O
  48.             return strWebData;
    4 H6 J# U7 G8 A2 J: V
  49.         }
复制代码

# G) |/ z7 k  E! |% U. O4 ^4 R! Y) E4 a% ^1 u6 h7 f+ \
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 12:14 , Processed in 0.051355 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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