AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利广告开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单广告位出租 
查看: 9143|回复: 7

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

[复制链接]

36

主题

164

广告币

251

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1360

广告币

1722

积分

高级会员

Rank: 4

积分
1722

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接8 j& U8 B# V: `
  2.         public static List<string> GetAllHref(string url)
    1 }$ m3 t: o- J: _, f9 L, V& h# p
  3.         {3 P+ Y6 q- R  @, e) s
  4.             List<string> allHref = new List<string>();, N, A2 p0 N7 n6 b
  5.             try
    ! _4 z- J% N2 M# A% W8 e. V
  6.             {4 w3 t" ?/ k- ~3 R  d
  7.                 string strhtml = soso.getHtml(url, "", true);
    & }: H& C/ ?2 }/ d
  8.                 if (strhtml != "error")
    * ]' t5 ~' Q8 [) h3 E
  9.                 {
    % f" Y( U. e& ^8 X3 Y
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");1 B- z* y+ R* l+ r+ Y5 Z) n
  11.                     MatchCollection mc = reg.Matches(strhtml);# N5 {  c& y4 R& @+ |
  12.                     foreach (Match m in mc)
    2 I9 e! T* P) m0 c% J
  13.                     {9 }9 G/ `% N' r% r: I- ?- T. z
  14.                         Uri uri = new Uri(url);# {% G6 v& \; W" z) K
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    + }5 p2 A9 w0 r+ L% K
  16.                         string fullUrl = "";
    - d; t; G' j7 C) L5 H$ k  [5 w
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    7 \  A: M# f) a6 U
  18.                         {+ Q% x9 i1 h5 Y9 B9 U3 K' X( n! f. L
  19.                             fullUrl = m.Groups["url"].Value;! \3 j6 X) I8 o( i& {, @# t
  20.                         }: [+ a! ^" e9 V9 p% p! H
  21.                         else+ b8 j# s% }# e4 C" U1 l8 y9 p% [
  22.                         {. f; }& B! z5 v. F3 @8 U3 G" l  V
  23.                             fullUrl = thisUri.ToString();' X. R1 r, R- C1 x1 _
  24.                         }
    7 W# V" m/ j" y) ?" H' l# ]/ r7 N0 l
  25.                         allHref.Add(fullUrl);9 c, _9 o+ J% T# q3 `$ V
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);1 G$ I$ F2 o% q! X2 L
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);& E. Q* K0 `9 G7 f( q
  28.                         //Console.WriteLine("补全链接:" + fullUrl);! {+ l  \: V9 ?, ~9 R+ f
  29.                         //Console.WriteLine("…………………………………………");: f2 W) `% a, Z- r  K. K, j
  30.                     }
    " ?8 y; B2 Q2 `2 e/ K
  31.                 }, @; _& d5 a2 x& f( C! O
  32.             }! W' P6 `) g# Q/ o
  33.             catch (Exception ex)
      _6 B9 w" D! `, v% p
  34.             { }/ b. [( |% k" W7 d  B) h
  35.             return allHref;
    7 P' V3 s' b' }$ N' \
  36.         }
    2 q. w1 B; J1 q
  37.         #endregion
复制代码

$ `9 F% Z7 Q6 q: }, E  R9 B) b) E6 x, w

  1. 7 d9 w7 E9 K6 ~0 {! [

  2. ! C8 ^6 O+ T- F$ f

  3. 8 m) V( m5 r+ z% a3 u$ G# L
  4. #region 数据去重
    , i% }2 l' V1 l5 Q
  5.         /// <summary>
    8 T0 }. E- M6 B0 l/ K
  6.         /// List<string>去重- E* T; |/ |0 `
  7.         /// </summary>8 ?) h9 h% K' I9 y+ y* j
  8.         /// <param name="list"></param>
    , p/ g+ u. }! n- B& ^: O/ @/ t+ p
  9.         /// <returns></returns>
    * w) M  O0 ]( ^
  10.         public static List<string> getUnqueList(List<string> list)
      x* ^5 \1 \* M6 H. k
  11.         {
    4 Z7 O5 a: ]. y* C$ d# e, k( g
  12.             List<string> list1 = new List<string>();# o# |3 }  D$ a# r) q1 h* V& b
  13.             Hashtable hash = new Hashtable();$ m8 i5 u% Z) S# \# C
  14.             foreach (string s in list)
    + q6 g% Y% S3 @- W3 Y8 H- m& P
  15.             {
    1 J, r5 _  R' G; Y1 B4 h$ V
  16.                 if (!hash.ContainsKey(s))
    8 G0 o. {& S% s
  17.                 {. h! K5 n0 `8 W0 h$ N7 h
  18.                     hash.Add(s, s);
    # U% j5 i+ D% B  y& K
  19.                     list1.Add(s);0 A: ~8 u+ s8 x- D
  20.                 }/ h- o- T! u6 @9 q& K
  21.             }2 H* i( u: I* A* [* ]' [9 u
  22.             hash.Clear();5 l! s& U/ v+ d& k4 O
  23.             hash = null;
    5 }( s$ X7 y0 q' c
  24.             return list1;
    ( e* J" b: l$ z0 k( \
  25.         }
    % U  D& c( }* k# {# i8 R+ }" N% m
  26.         #endregion
复制代码
2 L+ ]6 b2 ?3 F& _

! z$ p) S7 m+ p0 Q3 U4 ]

点评

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

使用道具 举报

36

主题

164

广告币

251

积分

初级会员

Rank: 2

积分
251
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
& M5 H5 ~+ r8 ?- [* U' O$ H
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1360

广告币

1722

积分

高级会员

Rank: 4

积分
1722

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20% @' k. W$ G" j' U- G) i
十分感谢!!!非常感谢!!

7 n& T. y9 _: d- d缺少一个gethtml,用下面这个:
+ O* a" F8 b+ a& t5 [5 E; a, n
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    * n% L4 Y5 h; U& {5 D- j9 e) X
  2.         {
    + s' w: t5 n; k
  3.             string strWebData = "error";# D* e4 U0 W' c. P3 ~  q) ^
  4.             try; O8 k$ ~& I5 z) U9 D
  5.             {9 _9 L+ Z3 a, |3 K( v4 m: z2 i
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    + b% {) {' o8 \+ u+ d2 a+ _) }& K
  7.                 // 需要注意的:
    " {7 w1 K( ^- E) h; [+ |. x' G, e4 C
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 " C( M* _8 @* R- a( C1 l$ A7 |6 ^
  9.                 //这是就要具体问题具体分析比如在头部加入cookie " C5 t2 q7 f2 ~& X9 W% H1 i  Z8 G
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ( h5 [$ \+ q% X* y! K) [( A7 X) G
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    : t0 ^% e4 V0 K( a+ G3 ]
  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)");
    ; H  l2 C! f3 N; o" M. S, e7 F
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");" s  D( z% D2 j# O& D5 f: f9 n3 R
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 # H4 O" R0 U. o4 |5 Y- w, ?
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    1 m1 ^; k* M' h
  16.                 //如果服务器要验证用户名,密码 ! E& \7 L8 b) I- @. ?
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ) A$ }6 U7 {  ]5 u* ], K
  18.                 //myWebClient.Credentials = mycred;
    ' \8 [  b5 {) j8 x; O2 p
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ( A" Y9 }9 g. `- }
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);, F9 H, U& Y- K/ k, T# m
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    4 D( Q6 K# ^; d- S. E& _
  22. 9 L3 w% R8 `$ k4 ?+ \6 y
  23.                 //获取网页字符编码描述信息 : g6 n+ k, M5 S
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    2 {4 M( J8 m. N( J
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    / f) ]% |( S5 r% T/ Q8 T
  26.                 if (charSet == null || charSet == "")
    / r5 n7 d0 {) ?' L7 Z
  27.                     charSet = webCharSet;
    8 v& U, F1 D- w/ M
  28.                 if (charSet.Length > 0)
    8 k$ c' w$ p, j# x; s
  29.                 {
    ; l4 ?: A! k) p% z, w( z$ Y
  30.                     charSet = charSet.Replace(""", "");
    3 E5 J2 ^, o% w8 I% D9 ]% Z* S
  31.                 }# T  e9 J! y& o0 X
  32.                 if (UseUTF8CharSet)
    . _3 D3 S4 w  h; p' }& H7 `% T
  33.                 {5 a/ d5 W7 y% U* w& U
  34.                     if (charSet == null || charSet.Length == 0)
    5 g5 j$ J2 F6 z1 }. F) ~0 `( R
  35.                     {8 o3 [$ Q' [9 `& Q0 c
  36.                         charSet = "utf-8";  G$ N3 |7 Y2 ?% G3 _+ |
  37.                     }
    + `" n- d& p* u% {
  38.                 }
    ) |; F! v. ]7 ^1 Y* Z2 {
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)- x# _; c5 o: K  N" x
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);- j5 ?5 Q; A/ {1 R7 A& D) G" ^
  41. % P3 f/ d6 U" z% X- |
  42.             }" w! ~% g: t- ~" y4 z
  43.             catch (Exception)
    4 O  ], u9 |& J* e
  44.             {: ]8 q- T/ C  Q' V5 L- d4 z6 R
  45.                 strWebData = "error";! I& d, T) B0 H$ d
  46.             }
    ! K$ [0 Z0 ]' N! T* Y8 l
  47.   N- {' U# j; i
  48.             return strWebData;7 U# f( ?6 ~/ j
  49.         }
复制代码
1 n* ]: B# \2 I' t: j1 E
% l; O/ @* F5 `. B: o# P, b
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 22:45 , Processed in 0.044297 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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