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%,国内持牌机构  
查看: 9804|回复: 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 抓取全站链接
    ) u6 P& }. o4 }% n# k# G
  2.         public static List<string> GetAllHref(string url)% ?( G+ l. h' A: @
  3.         {
    ( X/ t( B8 c, v9 V
  4.             List<string> allHref = new List<string>();- r- y! E6 m0 I
  5.             try8 R4 {4 M- X  g' ~- R/ U% K4 q
  6.             {
    " x: `2 \' _( H0 b9 c- \- b
  7.                 string strhtml = soso.getHtml(url, "", true);
    : K0 g9 n: N) ?7 I1 p1 B
  8.                 if (strhtml != "error"). v% U  }- d" @0 r
  9.                 {
    $ d6 A6 j4 X$ _# J
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");: ^) R- ?, Y0 d' ^9 F. L2 s
  11.                     MatchCollection mc = reg.Matches(strhtml);
    - B4 K  @; E5 _; @+ n! V0 N
  12.                     foreach (Match m in mc)  d" A% r! r0 ?; w2 Y5 D% E; [
  13.                     {
    / c: n2 f& _, o: {
  14.                         Uri uri = new Uri(url);: X& }' Q5 P  G( a0 @- W
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    & ~, N, c: J8 a/ }
  16.                         string fullUrl = "";
    ' O3 Y0 u0 D, `; q7 a$ {
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    4 j* Y; [! H9 c, b# E  U+ `2 V
  18.                         {
    " d1 ?0 \2 O* F+ @; w6 }
  19.                             fullUrl = m.Groups["url"].Value;7 S+ ~/ Y  ]+ z. ]: i* y
  20.                         }
    & o. J% k. |0 }) X* _: d, ^* r
  21.                         else
    9 n" I7 Q% S" R' z- `8 n# S
  22.                         {
    4 {/ n$ J+ ~; C: H7 Y( s
  23.                             fullUrl = thisUri.ToString();
    : `! t$ H0 q$ D
  24.                         }' N- j2 c7 V" K: q% s3 W
  25.                         allHref.Add(fullUrl);: _/ Y/ W1 g6 R' Y
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);. j! R" A6 n! _" U9 t% F
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    * H) }; m4 X/ k6 U7 c
  28.                         //Console.WriteLine("补全链接:" + fullUrl);' M/ C' Z8 V8 I: i
  29.                         //Console.WriteLine("…………………………………………");- I& `2 e. a% Q3 z: H
  30.                     }5 o- t$ Y# {9 @* j. B) J
  31.                 }
    " ~* G3 Y9 Y0 {) q" {
  32.             }
    ; o- s3 Z* s& |: z, t7 X
  33.             catch (Exception ex), |$ x0 K+ A/ q- B! D6 W
  34.             { }: M) ^1 a, U1 y9 J: s: b
  35.             return allHref;, {7 k8 J8 a+ A' U) O8 u1 K- S
  36.         }/ G5 B4 E2 R* C: w. G
  37.         #endregion
复制代码
% u6 O9 a7 w4 z5 m4 O: A
4 F3 m- t5 ?+ J9 z/ ^
  1. $ H. ]0 j) e- u# w% j6 g9 Q7 O

  2. * N1 R, B5 x9 C2 |- q5 _
  3. / `- y4 {! y$ z0 J# W/ @
  4. #region 数据去重4 O. ^, `/ C' j8 t6 g
  5.         /// <summary>
    * B. \7 e/ I7 Q% [
  6.         /// List<string>去重0 y. c4 k% W5 S, B- h1 D- O
  7.         /// </summary>2 {& ^1 [% B- u( e
  8.         /// <param name="list"></param>- D* A. y7 `) V; c
  9.         /// <returns></returns>
    . F) Z1 _! p+ f0 Z" z4 X( S* s
  10.         public static List<string> getUnqueList(List<string> list)
    " m4 z5 g# O- ]  [
  11.         {
    7 D. p1 j- T0 s
  12.             List<string> list1 = new List<string>();% Z' s( _6 i9 o5 U, V1 ~* F
  13.             Hashtable hash = new Hashtable();
    + ^; x3 U5 M" n4 Y( \; E& ~
  14.             foreach (string s in list)
    ) ]- D, C2 P9 a( k. c- ~
  15.             {
      f0 V5 B* F0 g' f- t
  16.                 if (!hash.ContainsKey(s))
    5 ?2 u1 z/ d2 g1 [  R
  17.                 {
    # w% u, N& t- I% l3 P
  18.                     hash.Add(s, s);% f+ Q! v% _6 h3 V. F
  19.                     list1.Add(s);4 Z8 z: x) r& O
  20.                 }9 h6 a1 V, k; Q; u5 D0 ^# o+ {
  21.             }' m0 C0 Y3 ^* L
  22.             hash.Clear();
    1 r! p7 A% J* q# Z
  23.             hash = null;# f5 l. C+ [) R8 J
  24.             return list1;0 k- n  j! c/ s  E
  25.         }
    4 L- H( C' Q- ~3 X) u( O
  26.         #endregion
复制代码
7 A7 H6 @6 s2 N- Z2 l
4 K7 {* X6 i+ O+ N/ m. M+ \: c

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

% W+ m8 y, Y$ r2 v十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:204 O# u3 b( S! b- I0 H* C  e
十分感谢!!!非常感谢!!
# O% w. V) Q0 Z5 m( t3 a8 ]6 \
缺少一个gethtml,用下面这个:
' t! z1 N/ f2 [, C) k
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
      y( A+ P/ J' N4 ]( [% p
  2.         {
    ) {, S) K7 @/ O5 T: i
  3.             string strWebData = "error";
    - @3 a- E6 z( e: D0 g4 \) P- n
  4.             try% w, J* s) [6 p% w1 P
  5.             {( z1 k8 Q$ S) ^6 a/ X# c  n
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ( ~1 N7 }1 v0 w( d9 y
  7.                 // 需要注意的: % K4 D! X9 [1 q  t' \& P
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 1 O4 V5 u. l8 m: i( m+ ~  P6 D# @
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    1 T3 s, i8 s1 B5 \4 X3 ^: m3 K/ _  a
  10.                 // webclient.Headers.Add("Cookie", cookie);
    5 Z7 ~7 I9 N0 o! p
  11.                 //这样可能需要一些重载方法。根据需要写就可以了5 c! H$ O4 V! z1 b. P& C
  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)");8 m) `/ D( R$ \9 _4 W' J
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    $ }# y6 |/ {( [
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 / R2 ?4 ]  ^# Q' w( m( V* O
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;3 K, f7 r, c. C' @* `% T1 X
  16.                 //如果服务器要验证用户名,密码
    4 j: p) n1 V8 F- u+ Z
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    / D! V# h5 j6 u4 v& O+ s$ d" [
  18.                 //myWebClient.Credentials = mycred;
    ! ^! {" i+ X- t' O3 Y- ]1 g
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    0 y4 O) b. ^* S* g2 m1 Y
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);; r0 @& Y4 d- r3 G7 g; E9 Q( b
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    8 ]# c: d) D2 Y- Y) J
  22. + g, ~+ K* Y% {
  23.                 //获取网页字符编码描述信息
    1 Q8 F1 t% ^  Q2 B, \3 L
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    & y% ]3 V6 Y. f+ r
  25.                 string webCharSet = charSetMatch.Groups[2].Value;. m* M$ s- U; r; E* [$ g
  26.                 if (charSet == null || charSet == "")" M/ A0 c* k0 t1 z; e
  27.                     charSet = webCharSet;! Y; x3 ~& m; }) C, p& d
  28.                 if (charSet.Length > 0)7 |" B& J- l9 T/ T- h
  29.                 {
    ) S$ X# h, }) [' Q
  30.                     charSet = charSet.Replace(""", "");
    & g" m* g7 k  t+ i' a9 Y
  31.                 }7 M1 z! l5 [6 `0 V- k' Z
  32.                 if (UseUTF8CharSet)( }/ Q3 v$ b# O
  33.                 {0 j: E3 \/ p# V. v9 D* n
  34.                     if (charSet == null || charSet.Length == 0); e; b8 f. W6 G4 t" j# y
  35.                     {" P8 t4 K8 Q0 y  G& ~( M
  36.                         charSet = "utf-8";
    0 }, c( X/ I7 z: R' n8 R
  37.                     }$ `5 `" b  R: p# C1 c& a
  38.                 }
    * S, Q" F% B7 D6 D' i9 F
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    2 v6 T: f0 H9 p) {( a+ B
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);8 R4 q% N, X( W& _
  41. 3 ?( s6 ]3 v6 z4 X  c% f
  42.             }
    ( [4 ?. r2 U, o2 J4 @& `
  43.             catch (Exception). R! \8 H5 `! D5 l* i
  44.             {* b3 }( S/ U  z5 L9 S- c& b
  45.                 strWebData = "error";
    ! n( E9 r: {0 s9 M. i: S+ j- B& K
  46.             }
    % j2 _& z! O/ b. O+ ?* _( `

  47. & \- \) a9 z- m/ [) H* G
  48.             return strWebData;
    - Y9 c7 d7 i' d0 s" U- K( ?
  49.         }
复制代码

" x% J8 ?1 }' l+ B5 u% |* `/ [  D9 o/ O( q9 T# ^& _" t# k% I
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 07:36 , Processed in 0.056603 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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