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+ 地区
跨境债务催收/风险代理广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9846|回复: 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 抓取全站链接" Q0 r, s+ t! |/ g. W( v8 d
  2.         public static List<string> GetAllHref(string url)
    2 y5 j9 g% c( K0 G8 Y
  3.         {
    7 ?( N- e5 j  C0 F) |4 Q) _* Y: a
  4.             List<string> allHref = new List<string>();2 b9 L( ^/ s/ ^" p5 a; k0 F
  5.             try
    / n! @) _4 c& N/ M3 {
  6.             {# G! j; u: w4 w3 [6 |/ ?1 Z
  7.                 string strhtml = soso.getHtml(url, "", true);7 p9 j9 U4 D; Q- v5 Q' [( S
  8.                 if (strhtml != "error")
    0 Q8 e( W' t0 S! z
  9.                 {
    & }2 f6 g( Q2 E% k
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ' c$ J% w* v& V
  11.                     MatchCollection mc = reg.Matches(strhtml);9 g) m5 T0 o: w8 p3 U! s  i
  12.                     foreach (Match m in mc)
    9 T' A* S0 |, E" U
  13.                     {- d* s- h0 \6 X& u! Q. F9 u
  14.                         Uri uri = new Uri(url);3 S. m- {5 H" z% C3 [) u
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    4 A4 x  u9 Q' `7 S2 \% @( g0 B* O
  16.                         string fullUrl = "";9 k. Z$ x/ h$ N9 j! c3 }; j+ g6 B
  17.                         if (m.Groups["url"].Value.StartsWith("http"))5 w5 Q+ i' s7 V2 D
  18.                         {
    * L: W/ J1 o6 ?) a& N" E
  19.                             fullUrl = m.Groups["url"].Value;( V' R) h$ |4 H& _0 r
  20.                         }' t; n- x" d& w9 B; S
  21.                         else! K) S$ T9 u6 _3 y6 Q7 d! }6 J, `
  22.                         {
    ; ~  F0 n8 l& E8 W
  23.                             fullUrl = thisUri.ToString();6 C' i) _5 N( s$ N6 n3 w  K
  24.                         }
      `" C# h: e4 o* V' o& U! Y
  25.                         allHref.Add(fullUrl);
    % {! S7 y: x7 I4 j0 S
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    # T7 q8 T* V  x! c; s0 q
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    : [. J3 G$ ^; R- ~  X* s
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    & p0 r+ J" M) [, f
  29.                         //Console.WriteLine("…………………………………………");" E! U3 e$ L( G: E" q/ Z
  30.                     }) o9 N' {) f  D
  31.                 }1 T" o5 r9 T4 i5 m3 T
  32.             }
    $ I; a3 E6 c. x/ d% V0 C. F
  33.             catch (Exception ex)2 A+ Y% S" h) e! Q, E
  34.             { }: U, {; Q/ l' l3 _1 b* o6 z, q1 \
  35.             return allHref;0 ~) Z) t& p" r) z9 y
  36.         }3 I4 R$ h7 G9 \$ q
  37.         #endregion
复制代码
  a( v& }- n$ N! K

# `8 T! f; N# Q3 t3 ?" z
  1. % R. z  y* B/ g- w, V6 I
  2. , P( Q9 \* Z# U% \

  3. 1 V7 D# p, c2 L+ o9 y: E6 x' Z' E
  4. #region 数据去重, L) i$ T9 A6 l1 T# W
  5.         /// <summary>
    : D7 M3 E: y/ v' g: w0 l
  6.         /// List<string>去重1 e/ ^% v, S5 c8 m' p0 n7 f: r5 w) i7 ~
  7.         /// </summary>
    5 a- q$ t) g; J+ Y/ p% m) N( x
  8.         /// <param name="list"></param>, u" L' f! v6 x$ [* R9 B: a& U
  9.         /// <returns></returns>
    3 l4 G' h! n. ~* y7 `& ^+ {0 z+ t3 e) V
  10.         public static List<string> getUnqueList(List<string> list)
    0 a! F+ e$ Q& I& e" g8 C' f
  11.         {7 D: ?  g" ~/ p4 I
  12.             List<string> list1 = new List<string>();
    2 a/ t/ ]9 ]7 ?1 U' s: a/ ^0 j
  13.             Hashtable hash = new Hashtable();* k8 v1 K, g$ q/ \2 b
  14.             foreach (string s in list)
    0 B% a  `  g/ H+ [0 X$ z$ J) X
  15.             {" ^* k& q' I1 C9 ^8 h) w3 d
  16.                 if (!hash.ContainsKey(s))! k! A. Z8 a" H8 Z* U
  17.                 {2 L1 s0 o2 }+ _/ h6 x2 M
  18.                     hash.Add(s, s);
    8 |/ e% H5 i1 L6 H7 R$ C0 c
  19.                     list1.Add(s);
    , ~) U$ R$ A) V7 d
  20.                 }. N* h) j5 U8 j: @) x# K% J9 X
  21.             }
    6 b" R4 i, E" ~4 U
  22.             hash.Clear();
    2 M/ r4 Y+ ^, p$ C/ h) e9 h
  23.             hash = null;
    2 `" [0 }! k& R% X+ H' n
  24.             return list1;' A7 `/ f$ a* r1 ]4 ?
  25.         }; l9 m8 z5 D! Y' q# Y
  26.         #endregion
复制代码

# F' w; h- o- X4 x3 ~+ ?/ w; |6 D5 V* W7 y& X" J

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
( O) u; j; X- u
十分感谢!!!非常感谢!!

点评

缺少一个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" |+ F7 M0 r/ `
十分感谢!!!非常感谢!!

9 X: ~/ K" w/ s7 i" t/ o缺少一个gethtml,用下面这个:
1 w  D: h; M+ O! Z8 s
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    8 F# z( @+ S+ H7 A* H
  2.         {; ^& W' _$ l/ e8 \5 I' e$ J
  3.             string strWebData = "error";1 z+ j2 d2 f. c! U( ^
  4.             try
    ! @+ w' h. F7 A& \& E) {
  5.             {
    $ _/ N' B4 {2 z) T
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ! H8 N+ t0 [8 D$ ]0 m5 J! Y
  7.                 // 需要注意的: 3 M( A0 u* U0 M. O
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 0 S, }3 s1 Z8 r% k# @8 @
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    2 y* ]( b; R: u4 H6 a
  10.                 // webclient.Headers.Add("Cookie", cookie); 3 Y: ~, F- H& ?# X- K/ D
  11.                 //这样可能需要一些重载方法。根据需要写就可以了5 `6 i! k0 X5 k' [
  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)");$ @" K2 y- _: X) j2 ~* w8 p$ U
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");3 x; B# f3 J. e6 n
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 , ~" e9 E: F* |: ^1 T
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;; I/ i6 G" ]/ u  g3 ^4 q
  16.                 //如果服务器要验证用户名,密码
    9 t( `3 B$ L; `1 I2 O
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); * M( d$ O$ m2 w3 s7 Q$ C
  18.                 //myWebClient.Credentials = mycred;
    9 U7 M% i/ A5 P7 j7 Q' J
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    * C3 j1 V. j2 }( g0 T
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);% b$ M( p( L* Y  e+ ~2 W1 ?5 S
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    / e0 H% f) d3 S1 l. R  Y0 N
  22. * G: s" o7 j5 m" H9 \4 }& S
  23.                 //获取网页字符编码描述信息
    ! `6 J; E/ H' y' i5 Q/ v
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);" d5 A8 G; Z8 B" Z- e3 K: Q
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    $ @* Q8 {$ d9 a, U
  26.                 if (charSet == null || charSet == "")
    6 v# r0 u; |2 }- e7 X
  27.                     charSet = webCharSet;
    * i: G' q8 J7 f4 ^
  28.                 if (charSet.Length > 0)# B( |$ P. ^- p  J4 S( k
  29.                 {# b/ y! D; @+ t+ Y
  30.                     charSet = charSet.Replace(""", "");& K, n/ v! ^3 W$ V
  31.                 }1 X" Q  E# p! k
  32.                 if (UseUTF8CharSet)
    % B: M5 G5 J) l/ |
  33.                 {
    " b8 v$ G' O  s/ H7 k0 E4 ]
  34.                     if (charSet == null || charSet.Length == 0)) o" o% ~$ Z* U! I- n9 F4 r
  35.                     {
    ; C6 v' ^: J4 J7 b  z+ {
  36.                         charSet = "utf-8";" |+ h- T  w3 S0 C1 W& V3 R
  37.                     }
    9 m0 i7 `) z! F. A
  38.                 }1 ^7 M+ c5 H, k% E
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)) U9 W( v) @4 ]1 D' |4 f3 ?
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);" _. n, ^+ u+ e9 T/ a4 S

  41. 6 D& x8 Z; z1 N% d
  42.             }1 y% e) S5 U  j8 V  }1 s7 n
  43.             catch (Exception)9 J8 K) V) _$ [. g3 ]" J: R
  44.             {6 l# O& _' w) \
  45.                 strWebData = "error";% e+ I5 B6 R& A7 J7 y* ?2 c: F
  46.             }
    + Q7 q! L( ]4 q* e1 g8 X1 d. c1 N

  47. 2 i& p, K3 U) [/ E& H3 ^
  48.             return strWebData;8 R& z4 Z" S" U5 T( A
  49.         }
复制代码

! H- F: D& M. B0 |* F7 Z5 e1 u8 p6 d
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 02:10 , Processed in 0.054565 second(s), 15 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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