AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G需要代理IP?⚡️Proxysites.ai⚡️指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
FB BM不限额,短id账单户E.PN 虚拟卡DuoPlus专注打造跨境电商云手机BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
Google、Bing官方总代  联盟流量开户fb耐用号0.01一个fb账号官方合作商FB资源,账单户,分享户,国内一手
FB企业户BM户账单户源头收FB代投工作室,收TrafficFactory账号FB海外三不限-户源多 费率低PTM全球虚拟卡—进来交个朋友!
PTM虚拟卡⚡️费率透明⚡️额度随心FB虚拟卡⚡️消费越多返现越多虚拟卡 - Pay2.House【找量】BA独家Nutra单找量
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9459|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

170

广告币

257

积分

初级会员

Rank: 2

积分
257
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接9 J* r% D( G; v' D$ n
  2.         public static List<string> GetAllHref(string url)  r% T. F# J" c7 @0 T# I6 y
  3.         {
    ' q* I2 f: n. Y  S- K! r2 i
  4.             List<string> allHref = new List<string>();
    , I3 a: A8 X. u5 C/ @& }
  5.             try
    ( ]$ e. ^; D: W/ d$ Y3 |3 b1 z- Y
  6.             {
    3 Y; \7 C% b1 i3 V% y6 V! L; |
  7.                 string strhtml = soso.getHtml(url, "", true);' a* e; i$ n% C, b
  8.                 if (strhtml != "error")3 _) i1 I( P% j8 O. r% Q
  9.                 {7 O/ {/ n, Z- s1 H1 v6 ~( L
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");- I* I; i$ K+ v% S$ g. i0 s& c" Q" Y8 x
  11.                     MatchCollection mc = reg.Matches(strhtml);0 K. S4 l1 r2 n8 i
  12.                     foreach (Match m in mc)
    ' a* d+ S4 C+ W4 K8 i& {' C5 e
  13.                     {, Z+ P# @& B* }+ @9 X" _
  14.                         Uri uri = new Uri(url);
    " N& H5 x! w- f* w! `; ~# \
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    6 Q1 T: X& Q7 w, x* K  ]* V
  16.                         string fullUrl = "";
    , P1 d3 o( M+ a% q
  17.                         if (m.Groups["url"].Value.StartsWith("http"))+ m6 [2 c! d' a& ~% s
  18.                         {
    3 A- a% y$ e  h( _/ q; q' k* {5 I
  19.                             fullUrl = m.Groups["url"].Value;3 O; H' M! H$ q4 c
  20.                         }1 `) b5 w/ W: i* \! D4 D
  21.                         else
    . @8 c' G. b$ F
  22.                         {
    9 `& Z- x! z* ~5 j$ a* \
  23.                             fullUrl = thisUri.ToString();
    1 w+ c2 P5 }1 u7 M3 y* k
  24.                         }
    7 }0 Q; j0 j; m0 W; H3 g8 L  {
  25.                         allHref.Add(fullUrl);9 I+ n3 Y3 a7 x! H8 O7 A
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);# ^) ~( g8 u4 l( B; @' D+ B
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);7 F7 F: p, ?8 W% d! |5 {( v7 v. }
  28.                         //Console.WriteLine("补全链接:" + fullUrl);* T$ A' Q) Z4 v2 v1 N
  29.                         //Console.WriteLine("…………………………………………");
    + G1 N# j0 ^# D8 Q: ~# [% \6 e0 W
  30.                     }- u$ p1 m" y% e* h* ]) p( g
  31.                 }
    2 X. V. T& ?. g( G
  32.             }' M6 t  Q. ]* \  d
  33.             catch (Exception ex)
    * C' f. e" l2 L5 p2 z! b
  34.             { }
    7 q+ n0 d2 s! j
  35.             return allHref;
    - M+ F& z4 @& a/ L) d/ R* A
  36.         }
    & U! Y& B# U+ L( f, W
  37.         #endregion
复制代码
- J/ \! D# @) Z  \; L

7 d: V( \/ P& y1 u3 y, [" b; e4 M/ C

  1. 9 s. _9 e) C- O$ A" x( e

  2. , r: p( Z6 G* Q0 |8 ~- N

  3. - c$ j0 T9 \! d  x- m
  4. #region 数据去重
    & s3 i6 `# Q& K, E
  5.         /// <summary>: M0 T9 k$ `: p( z7 Q3 o
  6.         /// List<string>去重
    - V& o, k- c6 X
  7.         /// </summary>" C* Y! F) k. s% ]; p+ t
  8.         /// <param name="list"></param>6 F5 d" {9 C1 i
  9.         /// <returns></returns>
    7 p6 X4 Q7 t8 d& C/ c) j! g% ]9 M
  10.         public static List<string> getUnqueList(List<string> list)1 O9 b  H$ o; ~
  11.         {. h) G& k" x2 |0 M2 @$ ~0 D
  12.             List<string> list1 = new List<string>();, h1 M/ K" v. ~6 w) G1 D' a
  13.             Hashtable hash = new Hashtable();) g$ ^4 w3 s! C; R, P2 h
  14.             foreach (string s in list)/ w+ U( C8 B2 e# ~) G0 |$ [
  15.             {) ]) S% d- c' x) R! R5 a' V
  16.                 if (!hash.ContainsKey(s))
    + R8 i9 _8 t( S- T! ^
  17.                 {
    ! w- J2 t5 N0 }5 g+ V# j3 f
  18.                     hash.Add(s, s);+ _) J2 h2 S/ B' l9 F
  19.                     list1.Add(s);% O. L1 Z9 ~6 Q
  20.                 }
    " ^, C& A7 }4 s. `6 A
  21.             }4 Y. j8 P, B4 V1 C  Q
  22.             hash.Clear();
    & R; y0 ]4 ~4 ^  o. i, \
  23.             hash = null;
    2 J# G3 R! ]2 F" {; P2 e' g2 {
  24.             return list1;2 T2 }! u3 p4 L# _' v" L
  25.         }+ n6 }& E8 F/ [8 W
  26.         #endregion
复制代码
- C1 t5 p: I$ U5 c8 p0 ~# C
) C8 H) P" o! F5 O* L6 N+ r

点评

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

使用道具 举报

36

主题

170

广告币

257

积分

初级会员

Rank: 2

积分
257
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
, _" L9 Z. ~0 p6 u, v
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20: Z# a$ U9 |: C- h' I
十分感谢!!!非常感谢!!

4 k; B  o# k: c& z缺少一个gethtml,用下面这个:
6 s5 C/ d* e) h* \) C8 J2 ^
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    * n& |5 f3 P4 G; R$ E
  2.         {
    6 G* w2 |3 x) P2 `
  3.             string strWebData = "error";1 M9 K% J/ I% ?  R" `
  4.             try
    . B  A& d& S0 c* c2 ~% B1 o2 ?% x
  5.             {
    6 ]& f  x) p/ R$ g
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    1 v2 O: z: m* z- d
  7.                 // 需要注意的:
    9 A  C/ U( U! \' T1 _. s, L* C
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 9 a3 R7 i; x: C  |
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    8 O1 j7 @; V9 D1 K" n
  10.                 // webclient.Headers.Add("Cookie", cookie);
    9 Z' J- u, e+ E. P* z0 D: l7 q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ) j  _9 x2 f$ _: A& V
  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( p% \$ d- W. W* e1 t4 c$ S; O/ N  g' N
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");5 q' ?1 ?: t4 t
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    : _# P6 Z. Z, X
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;! K' |* b) _" i1 t+ ^! `
  16.                 //如果服务器要验证用户名,密码 ) F7 L. I5 O, a- Z- a2 S
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); , r" t! ]  D) T
  18.                 //myWebClient.Credentials = mycred; ! `+ B# b$ m9 I
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    5 A' L% I6 M" ^8 {8 N' E. A2 I/ `0 ~
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);1 P, l; r4 R6 O" |7 P& [! v7 _
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);$ w+ G: K. ?" X+ M

  22. : i( `: G1 E4 O9 ], b
  23.                 //获取网页字符编码描述信息
    $ B9 o* }9 N: a/ P. ^& \
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);6 a5 P- }. h0 o/ d% n5 O. z$ q
  25.                 string webCharSet = charSetMatch.Groups[2].Value;! r) ^1 T  i' O' L5 c# Z* s9 L& C% |
  26.                 if (charSet == null || charSet == "")
    0 `+ l  k& x5 P/ c8 z
  27.                     charSet = webCharSet;
    0 N) o  l1 u% t6 \/ A7 w, r
  28.                 if (charSet.Length > 0)) k1 R% ~5 @: `& w( ]7 d! Q
  29.                 {) l9 _+ K8 }( V9 _9 N
  30.                     charSet = charSet.Replace(""", "");$ C! m" n- `& `9 \; ~' |, m
  31.                 }2 f: Q# J# H' _
  32.                 if (UseUTF8CharSet)
    2 g! w1 i$ i# A
  33.                 {
    - J; A9 K3 C+ A% F0 D' [+ _$ G
  34.                     if (charSet == null || charSet.Length == 0)
    1 @, P6 h6 ^* K
  35.                     {: Q  u  n8 F, k( I4 ?2 `( i8 c7 }
  36.                         charSet = "utf-8";& E  H: A/ ]: e9 |" r" O
  37.                     }
    6 k3 i/ K6 ^5 O0 `' t# S
  38.                 }
    4 ^1 R+ K- Q4 ]  d8 z6 @1 z
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)0 _4 b0 E, K" V) V1 H
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);  \* l& o* U; o
  41. # _+ F- X1 i- P* u
  42.             }" m5 O0 F0 \8 u( e. J
  43.             catch (Exception)5 Z! y7 ]" \0 Y# e& c
  44.             {
    - X* k. ~6 Q0 y
  45.                 strWebData = "error";0 ^. ?, Q  R9 W' g4 M3 G# R- u* _0 {
  46.             }: G, q6 A2 V' s. T3 K2 k) s

  47. & [; j4 O2 k3 Y& `/ M- r
  48.             return strWebData;
    / W& ]  `4 h7 m; k/ x5 d6 Q
  49.         }
复制代码

9 r% U( [( K6 I8 J2 a
- `7 a+ s% ~/ P2 }
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-16 11:59 , Processed in 0.051499 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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