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充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9956|回复: 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 抓取全站链接2 T! U4 P4 O$ _' q4 o2 r! b8 r7 N
  2.         public static List<string> GetAllHref(string url)
    . f+ J; E, T9 S' i* Q3 ?4 l
  3.         {2 b* `$ O/ O8 s
  4.             List<string> allHref = new List<string>();8 R8 T8 t$ T$ }4 S8 F$ `
  5.             try/ B4 G( s) a* M, S9 \+ }1 s
  6.             {
    ( h3 ?; F* f6 b; }. o! @- J# C5 {
  7.                 string strhtml = soso.getHtml(url, "", true);' v4 p# |* e, }+ |1 T2 Z4 `
  8.                 if (strhtml != "error"). D3 w* Y: Y; Z- {* B' j+ d* `2 y
  9.                 {
    + h8 U; Q' v1 ^
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");  U5 V  F# K8 a
  11.                     MatchCollection mc = reg.Matches(strhtml);
    & q0 l" s2 G5 W; A
  12.                     foreach (Match m in mc)% Q3 }1 c) |7 ]3 i+ f9 l2 I, _
  13.                     {% [5 H; q) P" e" M9 U( E. }
  14.                         Uri uri = new Uri(url);2 d1 `- m( ^, [9 L6 Z( C2 @
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);9 b- O! f  V$ }  O# G* H
  16.                         string fullUrl = "";1 P8 J$ z3 k. i/ y; O
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    $ @4 r" ?- v1 V9 A: A, J% f8 R1 D
  18.                         {- h' I2 \+ D+ G& R* N# f) I5 p  t* n
  19.                             fullUrl = m.Groups["url"].Value;5 \4 }+ b: y( X4 ?; M
  20.                         }! w) x& ^5 d7 w1 K1 u) N
  21.                         else
    * j: x9 m- o! ^) d5 X
  22.                         {& A' _* v7 M! U  }4 I
  23.                             fullUrl = thisUri.ToString();
    7 W6 K* C1 p, v0 W
  24.                         }
    2 ?, |  N4 w, B: X% K
  25.                         allHref.Add(fullUrl);; k& z% q+ j: b2 U, a
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    2 Q" Y' j5 L6 L; K+ _  R. s
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ; i) ?+ R6 c+ S- j5 |
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    , e+ Y  o+ |+ C) F  i. e
  29.                         //Console.WriteLine("…………………………………………");" h( j) b% e) }( m# W: }6 B" k0 G, [) ?
  30.                     }
    & y2 a# ~8 u; p# O! X) A  s6 T
  31.                 }9 g6 f) q' ]$ C! v
  32.             }
    , _& p6 |+ w3 z6 B- r; x
  33.             catch (Exception ex)
    3 o: ~( S6 i! o
  34.             { }
    ) P! J/ B4 W4 O( s2 @/ ?3 l
  35.             return allHref;) h8 R! E* p  N' Q- q1 _0 q; g( G
  36.         }& r3 D( x, w' f! V$ V6 i( Y
  37.         #endregion
复制代码
) ]1 a' L% f: x

  e! b. w# V6 Z9 A, A

  1. , W' `2 ?/ ?. F/ I/ c
  2. 3 s9 x9 }' q9 [: K( U8 Y
  3. 1 V% X4 d1 N/ E/ d
  4. #region 数据去重
    ; Q3 z$ Z: n0 D) F/ K, J0 ^- z6 j6 H; m
  5.         /// <summary>! B  P- H& n: j) p1 Y% R' p& s
  6.         /// List<string>去重
      Z# e$ k9 C- c( X" Z) g
  7.         /// </summary>( R$ r- T- `5 p7 h# m
  8.         /// <param name="list"></param>
    ( j8 F" |5 G) w2 H9 _3 c6 h7 c( I  b
  9.         /// <returns></returns>) E' _. P! [; F( l/ w
  10.         public static List<string> getUnqueList(List<string> list)
    0 b7 _6 ]! P2 J& _$ B
  11.         {: c# |5 U' G; K# E) i2 I7 @2 B
  12.             List<string> list1 = new List<string>();! p* D0 e) A: }" l/ N
  13.             Hashtable hash = new Hashtable();
    . Z$ d2 M2 p" _/ j
  14.             foreach (string s in list)
    5 l$ e- d7 z' j: z* z& `
  15.             {& ?/ n- _5 \) l+ M) {) q% V( J
  16.                 if (!hash.ContainsKey(s))3 O8 {' S$ `& h
  17.                 {6 |- A, l  ]" [" |8 P) X
  18.                     hash.Add(s, s);
    ; w  T4 S1 `5 P5 Y
  19.                     list1.Add(s);8 j% v1 w9 Q9 F& _- g; I1 s
  20.                 }
    1 L' z* ^  @  [3 t( m3 S
  21.             }7 J0 h0 h) J8 E# p" @& a5 [
  22.             hash.Clear();) M# Y! S4 g' _# U# H
  23.             hash = null;
    - u* r0 {+ D+ r* l1 b8 [
  24.             return list1;
    5 }0 n# ?4 V* N5 a: m
  25.         }( Y& O, h( ^' q9 i# M3 F
  26.         #endregion
复制代码

0 s3 ^" n0 r6 L. l6 z" g- |
6 |/ J0 `, J& H  R' _( P7 h. ~

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
! A, B* ?7 P. Z$ A* D1 y& b# Z
十分感谢!!!非常感谢!!

点评

缺少一个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
: Q. G$ l" t+ \- C% q! @6 S十分感谢!!!非常感谢!!
0 Q, r$ Q$ z! u# R; A
缺少一个gethtml,用下面这个:# s  P- }* b4 h( }# u
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    ' g( U+ ]+ N% P8 m
  2.         {
    & [" T4 V3 h5 ?
  3.             string strWebData = "error";
    ) [  c3 `0 H! g  y7 }
  4.             try
    5 x4 t7 D* D9 ~' h6 k$ t
  5.             {  e5 _; A2 @- m# K  h
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ) B( b8 O; X# k! ?
  7.                 // 需要注意的: ) z/ l; H0 y/ o! o: m* v+ a
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 5 p: [' M5 x  c/ J8 T. |" r3 a6 ~
  9.                 //这是就要具体问题具体分析比如在头部加入cookie & }: R6 F, D) W* \
  10.                 // webclient.Headers.Add("Cookie", cookie); 9 @# P& a+ t6 t
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ( l# K% L- ~  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)");
    * l" P0 U: `2 p: p8 a% o
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");- ]. {2 @6 I+ P, W. d3 }0 l4 U; I
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    3 y0 w& Y+ d  s) I, }
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    0 J1 I( R  s+ A; K/ W
  16.                 //如果服务器要验证用户名,密码 6 V+ c9 Q) V  _- m+ Q1 y
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 4 d& y9 I7 F4 y9 `5 Z1 F5 v1 Z
  18.                 //myWebClient.Credentials = mycred;
    3 r" S0 ?) G: L" j0 F
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) , n2 k4 v$ B6 u& |# \3 w+ G9 ^
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ; ?) l, I4 j6 q8 E+ V( q: J
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    1 b$ s( a- p' p/ ]& Q

  22. 5 A0 D3 ^6 T' c- ~' f
  23.                 //获取网页字符编码描述信息 / d: n3 L& e/ `6 G1 `- ~% k, g
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);+ j0 J0 I# L, [% N4 T! C
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
      y3 f4 e* {  U! D, g. S! L
  26.                 if (charSet == null || charSet == "")! Q, x( Y2 @" x" K( Z8 ]( J
  27.                     charSet = webCharSet;
    ; M* [7 o& \' \) P' B/ o9 l/ P
  28.                 if (charSet.Length > 0)
    - o0 _$ Y, `3 _0 Z
  29.                 {
    9 y. u4 v7 s" w5 y0 [' `
  30.                     charSet = charSet.Replace(""", "");! _8 `0 ~9 h1 b: A% M) a+ t2 X
  31.                 }
    ! W  ~2 [8 P3 I+ I6 p
  32.                 if (UseUTF8CharSet)+ V* M  s, C, Y) d4 Q; U& H( \0 V
  33.                 {: ?8 ^1 S6 l2 K! ~
  34.                     if (charSet == null || charSet.Length == 0)' W' O3 d: E2 Y" r% U/ {1 D& L- r
  35.                     {; v, e0 i4 T# ]6 D. J  R& f
  36.                         charSet = "utf-8";# ^8 D5 ~4 \# f- ?# X
  37.                     }
    " x1 f2 ^4 l; m& E
  38.                 }
    6 \& M1 _' O+ v2 b
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    7 y3 \4 D" i( S( V; F% Z2 Q% g
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);5 K% O- }& l2 V* N
  41. % r% v5 _, T5 e7 S! ?* a
  42.             }
    ( r0 E( V  y, X4 m
  43.             catch (Exception)
    ' H4 W$ y+ D. V( x# f
  44.             {+ v7 E/ J: N. ^) s" P  \
  45.                 strWebData = "error";
    : r: q( r# j0 {# ]4 I$ Z2 f8 o
  46.             }: o3 V' V% V* E
  47. . N# w% f7 @$ q. \. s- [  G
  48.             return strWebData;9 V6 C9 a, V4 R/ R8 j
  49.         }
复制代码
9 v. m, y5 {7 x% }) W5 A2 K

. X: y: b( K8 h. x  r# `
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-14 11:53 , Processed in 0.055005 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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