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提供TK企业新户老户、谷歌新户老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9794|回复: 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 抓取全站链接; T% K( g0 ]! r. [7 S; d/ M7 \
  2.         public static List<string> GetAllHref(string url)
    & U2 B. _$ N, y, W6 U- |. c
  3.         {( j2 d& @& y9 P4 v1 r" l, S  U
  4.             List<string> allHref = new List<string>();+ u6 n. i8 g. D' Q( ~
  5.             try: [  w8 Z) E3 T" Q
  6.             {& L2 Q5 n2 v; x# e" \; X& l
  7.                 string strhtml = soso.getHtml(url, "", true);5 L- M1 ^2 ^0 k$ O# G
  8.                 if (strhtml != "error")1 l& t7 H2 l9 Y! _
  9.                 {9 I2 f' g; Z+ d) \$ T* s
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");' [; F; w! Y. \) Q. b
  11.                     MatchCollection mc = reg.Matches(strhtml);
    / m( d& [: C9 C5 R( G0 K
  12.                     foreach (Match m in mc)
    6 J; s4 g) u: o- |3 N+ T
  13.                     {, i) O( [$ \% k+ Y% b0 t5 x8 D% f
  14.                         Uri uri = new Uri(url);
    2 H1 {5 q/ \& l0 `& y  N5 k
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);2 f8 x+ h) \( ~- x$ \1 _0 U4 z% z6 q
  16.                         string fullUrl = "";2 c' B8 f: j0 C2 r9 D# U) O  e
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ( P: f% e& x# g! ^0 g
  18.                         {
    & V: T$ j+ b+ g% f2 B
  19.                             fullUrl = m.Groups["url"].Value;
    , M6 @; ?7 L4 L. ]# y  U' q
  20.                         }# f; y* D) [6 X3 O4 \
  21.                         else- m! Z' I  r% q! E1 N
  22.                         {
    + [6 Y! Q- |& N0 i) G
  23.                             fullUrl = thisUri.ToString();( ?4 A5 G; _$ o6 h
  24.                         }
    9 G' h. ]0 {9 t2 j7 B% |* x
  25.                         allHref.Add(fullUrl);
    6 Z2 e. A- e9 S, |8 E
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);# B5 O5 g* l6 X+ d% L
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);& O3 c' }$ J: c8 o
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    * S/ c+ k+ F: e* T: P4 p: R' N
  29.                         //Console.WriteLine("…………………………………………");' |& i! _8 A6 \
  30.                     }
    4 }! r. G4 I7 U8 ]) @- T* t' A
  31.                 }) ^" P/ e' _2 X! \
  32.             }2 a  n. R* n4 w8 x6 |, e
  33.             catch (Exception ex)
    4 a; A; i! b1 @
  34.             { }
    7 h0 B7 h" T' w; q0 m, z. x
  35.             return allHref;
    & S8 F# Z3 z9 V, U
  36.         }
    ! O1 c2 H/ D9 u) L. v
  37.         #endregion
复制代码
5 u/ z3 Z7 O' k3 h! _

. M7 ^5 ], A: a* R/ X
  1. 4 ]* n* z3 F" r5 z
  2. - K0 Y: `7 {! _. N$ |4 Y$ r

  3. 9 d# D3 t( J$ A$ X* R, O4 d" {* Q% T
  4. #region 数据去重
    0 S, m1 J$ N8 ?, N) _. x* m
  5.         /// <summary>
    8 h( A; f& X5 p
  6.         /// List<string>去重
    - ^6 U$ a+ h- |
  7.         /// </summary>  L) N! r9 T  y2 B- X" G
  8.         /// <param name="list"></param>2 U7 E0 h3 e5 m4 F, ~: i
  9.         /// <returns></returns>
    $ g0 I2 J+ {, u4 L- D
  10.         public static List<string> getUnqueList(List<string> list)4 ^4 H5 D1 d8 |/ p+ x' L3 ~: p) X
  11.         {3 I, F# @3 M9 p$ E* o1 J; Q
  12.             List<string> list1 = new List<string>();4 z) R, W; F* e8 b3 J
  13.             Hashtable hash = new Hashtable();8 s& U# F. E2 [* o
  14.             foreach (string s in list)( m! A: T, d5 z- Q$ j; b# ^7 J, w) F
  15.             {2 f. o! @: p6 p9 t$ ], e" h
  16.                 if (!hash.ContainsKey(s))% T8 P) A( V4 P) j/ Y$ ?$ C, B
  17.                 {- S3 b% S% N8 S2 D% D: r
  18.                     hash.Add(s, s);
    $ U- s6 v' x* I# x0 H4 b" O2 `
  19.                     list1.Add(s);
    1 a# j% ]$ W+ _) g
  20.                 }* P+ {. A) \4 A) P
  21.             }6 Z5 K  {* f0 |8 z  h' P
  22.             hash.Clear();& _) O$ M2 N' P% }) F) @1 s/ X
  23.             hash = null;
    1 ~) d! A6 _7 w; i0 _- c
  24.             return list1;- B( K# D/ v2 z- B
  25.         }
    4 V+ q6 q0 O* n, X4 q
  26.         #endregion
复制代码

# a3 V. a% a6 s
2 q+ E7 e1 M; U2 R+ A, Z

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
& A# l/ o  Z- }9 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:20
7 p# J/ K4 {! y6 B* d0 v3 ]3 i十分感谢!!!非常感谢!!
; T8 z6 Q- B2 p
缺少一个gethtml,用下面这个:
8 u6 Q# ?$ h4 ^2 e4 N: M/ J( e4 u& s
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    & G+ U8 A' o  G# y6 U
  2.         {9 `3 W7 U% I+ z, M) ]
  3.             string strWebData = "error";
    2 m) x' E  w4 V/ z: S! Q
  4.             try4 X9 x' {4 c( ?4 o
  5.             {9 r+ G# s. L" \# {4 {
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient : f7 R( P) g2 U/ Q5 D5 z! b4 @
  7.                 // 需要注意的:
    9 U8 W+ V; O, P  O9 s; Q
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 , [# h2 ?& n0 u+ |
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
      K/ ?9 k$ Q# ?; d; y2 N9 U  o0 ]
  10.                 // webclient.Headers.Add("Cookie", cookie);
    4 {* p( d2 B- U2 C8 Z
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    % I7 a' y5 X/ s* M
  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)");( h3 @# Y; c! D+ U/ E
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");7 m( {! f  i' ^' F/ }, U) |
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 . P8 G' W1 b& _! U  T9 T
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;- F, W  [+ s: R; G" L
  16.                 //如果服务器要验证用户名,密码
    : g9 u! `9 U7 u% @
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 4 @! s7 L' ]& f( i( _
  18.                 //myWebClient.Credentials = mycred; / P; E7 g. y( k7 W# V/ ~' i
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) - b1 F1 q+ ^- \. q* W& j* ^
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);9 v  G5 D# T  i9 D) q
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);1 `+ s. v% ?. s7 n6 q
  22. ) V! r7 O% J7 m8 M" s; ~. R
  23.                 //获取网页字符编码描述信息
    : V5 }' o9 }% Z9 L7 f
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    % s! ]# d" }6 X; D- [# Y$ E( ?
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    & N9 A- ^- J+ W8 g! C5 v" M
  26.                 if (charSet == null || charSet == "")
    0 t8 q6 W( A: Q- h2 v
  27.                     charSet = webCharSet;' e9 G% ~+ v5 z' e
  28.                 if (charSet.Length > 0)/ A' z/ X) O( {8 f# X! J
  29.                 {6 K1 t$ S* A' b
  30.                     charSet = charSet.Replace(""", "");) t& R9 v8 P3 o& |' A
  31.                 }
    / u3 s" x! F1 g$ W& [7 d
  32.                 if (UseUTF8CharSet)0 X  Z1 L3 ~( Y/ X2 n/ \
  33.                 {
    - n2 m- _2 `. }
  34.                     if (charSet == null || charSet.Length == 0)
    1 l+ o6 C; A8 S( u
  35.                     {
    1 Y; I: s# i3 T6 b0 n' n
  36.                         charSet = "utf-8";5 y7 j$ x# N; d
  37.                     }+ ~* j2 Q: \6 L0 w- z( ]
  38.                 }
    # W: ~* x1 P3 g, x, E5 d: Z
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 ~+ u) l- z# j7 {8 s9 G* i
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);' \, F: Y4 d" C' l3 r

  41. : K6 [: |5 _- o2 N2 Q
  42.             }
    0 `" D0 T; o4 Z& T4 C
  43.             catch (Exception)- N0 e  f  ]5 b; e
  44.             {
    9 c) A1 l2 v9 I+ p4 W  s
  45.                 strWebData = "error";
    ) r5 X' W6 n) n" D0 F0 D1 o0 K
  46.             }. j' g1 \/ g) {8 V2 `
  47. . H" i; r! E: [7 r/ B
  48.             return strWebData;" k4 U2 a6 s6 G: [& D
  49.         }
复制代码
4 C: S% I, _: [2 U
  R3 V: I' y$ S  V& B
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-28 09:03 , Processed in 0.057520 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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