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个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9832|回复: 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 抓取全站链接% Q1 e# `. l2 e; D3 r- x& F
  2.         public static List<string> GetAllHref(string url)* p- O7 z/ W! b! u  l# a
  3.         {  U) \! e+ \6 L9 ?; M
  4.             List<string> allHref = new List<string>();
    - g( L5 n$ C* X) ]' g
  5.             try
    & G( }2 v7 A7 A3 @3 c
  6.             {% g# z! X; |; n. R3 o3 H
  7.                 string strhtml = soso.getHtml(url, "", true);
    % h. @- @- h1 l( r
  8.                 if (strhtml != "error")
    , g- s9 B7 J% U2 `
  9.                 {
    % N! ?9 f# v+ D. f" [' v* N; u
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");! m* `' v: {2 i. p- I5 U  ]
  11.                     MatchCollection mc = reg.Matches(strhtml);+ f/ D* n. L8 ^+ z( B& |
  12.                     foreach (Match m in mc)0 K) @6 }! k9 l, r
  13.                     {
    ( A6 o) ^# ?7 ?- A7 D
  14.                         Uri uri = new Uri(url);* L3 q1 e0 x0 m( q& Y
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    / g; Q4 m! l' ?& X; |
  16.                         string fullUrl = "";
    , I% ]# v7 i7 L  W3 `& N
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ! A- M, X( F5 R  G/ b( F
  18.                         {
    7 `; w' k$ O; H  ]1 O: R
  19.                             fullUrl = m.Groups["url"].Value;
    9 |+ w: A6 |2 R+ I
  20.                         }
    & x, R/ F0 K3 L- W
  21.                         else% ~' F3 ]) Q5 l8 r$ Z0 {9 Q" k
  22.                         {
    ; ]$ I: z/ q; B0 `1 D/ Y
  23.                             fullUrl = thisUri.ToString();
    ; a( v! ^9 B% v! t& W
  24.                         }$ v/ D3 P; B' x" a
  25.                         allHref.Add(fullUrl);3 p" G1 F8 F! F9 T% ]
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    9 m$ X+ f% r* ^* t0 V, b8 v6 B
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    . v1 `) m+ P: X1 ]6 U( ^/ m
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ) u3 x# N) |0 i3 G" T" J* ?
  29.                         //Console.WriteLine("…………………………………………");" I1 i" G9 X: [% I; C# @
  30.                     }% p7 D& u1 O. L8 }, {
  31.                 }
    : X! v4 c' R, e$ U  j' J* _7 v0 p
  32.             }, t6 C* F2 B# h2 D; J8 z( K; `# w* |; d
  33.             catch (Exception ex)6 \+ c+ M" t; o4 V' v
  34.             { }
    3 M% t; A  W+ p7 a+ j. Z9 [$ }
  35.             return allHref;
    : N+ e  x, a0 r- [9 l
  36.         }$ `" t: O3 U/ @, ]* q
  37.         #endregion
复制代码
8 I1 _. J( w8 m
; \# e% i; V0 c

  1. & s+ x. c# t! t  a

  2. & W( l3 T5 b5 g! b; l* P
  3. ( M& X9 a& R3 ]( w
  4. #region 数据去重9 O0 C8 k/ z( \
  5.         /// <summary>3 w  l# o2 Z6 L8 w6 n, y/ ~
  6.         /// List<string>去重
    , k* Y& C1 j% p$ z9 e
  7.         /// </summary>. y$ l% i, O' C( F
  8.         /// <param name="list"></param>6 {3 r+ ?. a5 Y6 u  g
  9.         /// <returns></returns>; @  M: H) i9 Q1 a7 Z
  10.         public static List<string> getUnqueList(List<string> list)5 Y2 W' D/ j9 v7 {* i
  11.         {: e2 a) q) X7 A. T4 `
  12.             List<string> list1 = new List<string>();
    " N; r5 s1 B- B9 ~
  13.             Hashtable hash = new Hashtable();
    8 G+ O# q0 j9 n- Y8 D
  14.             foreach (string s in list)
    2 {$ _- b+ s) b1 E) c. X$ `: g
  15.             {
    0 o0 u! J  @/ q2 T
  16.                 if (!hash.ContainsKey(s))) T) f' u% T: H/ g' \1 G, a3 i
  17.                 {
    % ?" \; q: ^0 {
  18.                     hash.Add(s, s);
    3 q8 [" B( k! g0 l1 u: f
  19.                     list1.Add(s);
    / @' H6 R5 o! Z. A- e+ y
  20.                 }
    ! L# i. x" w  g1 d0 h, u- c
  21.             }
    6 I2 S  e7 ~& X& k4 J% G
  22.             hash.Clear();
    ) J2 r) q% y/ J; j4 b
  23.             hash = null;
      D2 T3 a) u/ D4 o
  24.             return list1;9 p: f% E! i7 t& a
  25.         }" Q7 k& A) k+ O6 o$ R3 }- Z
  26.         #endregion
复制代码
- x! @  S0 O* P& ]% @

; O/ e2 A/ G: {, Q1 Q

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
# v9 p. c8 |+ J  u; e
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:200 w# ?3 i, y7 ^/ t! @
十分感谢!!!非常感谢!!

4 u( x% u2 p# ?  S3 M4 [缺少一个gethtml,用下面这个:8 |" ~5 O/ L- V8 r- M3 y* o
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 2 s- v( }  E6 v. h# C) I
  2.         {4 y3 C, _# S( {% G4 q
  3.             string strWebData = "error";
    + _) A% T2 ^8 w3 n& P7 `
  4.             try' E+ h+ \  ^0 P% ~
  5.             {& F  u. d7 s) [% W2 ^7 Q
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient : d: h+ Y  g0 K
  7.                 // 需要注意的: + c9 M$ @- o4 ]
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    7 m! G6 x; A& G5 p
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ) Z& V& U% \. H$ e) N, ~! [
  10.                 // webclient.Headers.Add("Cookie", cookie);
    : J9 j1 S  J# d5 j% p0 v. A1 s
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    $ v6 ~2 a  g0 z9 x* |4 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)");
    5 ?, M: P0 A7 p2 h3 F
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ' A+ O" {0 I- G0 F/ f
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ; a+ W2 b; T+ C% A4 M0 g
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    8 ~2 z  l1 J/ c
  16.                 //如果服务器要验证用户名,密码
    & z5 I' ]9 Z, D/ N6 d) E+ I  m2 J  G
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 5 }! }1 Q" x% ?5 t# e6 Z, l3 _
  18.                 //myWebClient.Credentials = mycred; ) ~) r6 M8 }5 H$ U) u" P( W5 n( |
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    4 _+ D% U# ^4 n: a; z4 k
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    % g# e' [  j. J
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);0 g9 V1 X+ N. j3 p! R

  22. : D) N/ b" v( s* v4 [2 r
  23.                 //获取网页字符编码描述信息
    / a# `. l. h5 \, k
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);2 p: ^+ u4 n1 D1 k+ C( n0 W* I: ]7 y
  25.                 string webCharSet = charSetMatch.Groups[2].Value;" d9 j5 x; b6 T" m5 \6 b+ `- V
  26.                 if (charSet == null || charSet == "")
    4 b! u$ A& h# M2 T2 X1 `" p
  27.                     charSet = webCharSet;/ a7 P* s1 j) N7 G* p) N
  28.                 if (charSet.Length > 0); ]3 A6 D, e0 h
  29.                 {; K- ]6 I5 I  c1 U. V% j; a
  30.                     charSet = charSet.Replace(""", "");
    # U' C! i3 o4 I/ A( c1 ?1 \
  31.                 }, f* r% U: q+ Y1 w( ~
  32.                 if (UseUTF8CharSet)) D* J8 `9 K+ W. @* y8 Q  X
  33.                 {% k4 H9 P. p# H. _7 i
  34.                     if (charSet == null || charSet.Length == 0)
    ! ]0 M/ E4 D- j/ {( U! ^3 o* C7 ^: h
  35.                     {. m  Z) c, m( F! m+ E- ?; g
  36.                         charSet = "utf-8";
    - ]; o( X/ m! [: j( ]
  37.                     }
    $ q1 B6 i, L# K9 u1 `
  38.                 }
    5 S  Z9 P5 c- F  t: a. S
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    & x3 T, N' E# T7 g5 U2 b7 `
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);! P# s: C5 S' w2 B0 D

  41. 8 {+ j- f  Z$ A' g+ e4 s
  42.             }! h" j$ e, _8 U, y" ~7 I# [
  43.             catch (Exception)$ ~0 f" A3 J8 _" Q9 [- f
  44.             {
    ) }& }5 `+ M2 u
  45.                 strWebData = "error";
    # m/ o' T+ e! F6 r; n, j( U
  46.             }3 J( ^; L9 g' V& {

  47. 0 _1 R) [6 V6 f4 ?  P
  48.             return strWebData;
    ( v* Y; L' ^0 S. t4 g+ T, N7 l
  49.         }
复制代码
8 x5 k# q4 G# }7 ?! g+ j1 @# }! y

8 a2 j4 n% K% O
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 23:12 , Processed in 0.050961 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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