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代理各种主页、账单户、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+ 地区跨境债务催收/风险代理
高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9865|回复: 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 抓取全站链接  W8 y( P1 |2 R) |! y$ F! A) w
  2.         public static List<string> GetAllHref(string url)9 |. ?; A: H! N% H" M& A( h
  3.         {
    4 Z6 S5 \& ]2 t* k( R
  4.             List<string> allHref = new List<string>();
    6 @# j# x/ N, Z
  5.             try
    ' K8 o/ }( X  d+ q3 M
  6.             {
    9 x! R  A% R& c6 G9 f* g
  7.                 string strhtml = soso.getHtml(url, "", true);+ f, L. v+ a2 n8 b! E+ I# b
  8.                 if (strhtml != "error")
    ' C$ O! U- `5 G0 u! m
  9.                 {
    ) u1 v; y9 W3 P" [
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");. h( d$ B$ Y! t) r
  11.                     MatchCollection mc = reg.Matches(strhtml);1 A; K, _1 {+ @2 L% w6 Y  C3 A* ?+ f
  12.                     foreach (Match m in mc)2 h- |6 W( Z3 b; J3 V5 P/ P
  13.                     {
    & C. \4 K+ e. v3 R
  14.                         Uri uri = new Uri(url);
    ; U& w, k( _& Z3 z/ r- O1 ]
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    5 s$ P0 a! u; u
  16.                         string fullUrl = "";
    " Q! ^2 O1 k  p# l$ W0 v! s
  17.                         if (m.Groups["url"].Value.StartsWith("http"))( l3 d% O0 l) Z" M* }$ G6 q
  18.                         {- Z- H  V; r9 `$ M
  19.                             fullUrl = m.Groups["url"].Value;- z  B/ m3 g$ |  W, X8 {' L% W1 I6 c
  20.                         }
    * w5 Z; J- k' H. l
  21.                         else
      ~. c: ^( w5 M/ Z) Q# [4 `' f
  22.                         {3 u% K1 Y: o1 @6 ?# ~) I& d
  23.                             fullUrl = thisUri.ToString();
    - G) _; d' J2 ?
  24.                         }' M- _/ {) O! ]0 X& W7 K
  25.                         allHref.Add(fullUrl);4 c0 b: w7 T, L) E# M# `/ X+ B
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    % D+ U) q. x$ S8 n3 h, ^) r$ e! y9 U
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);6 t& g( X; V  F1 b& ^% |9 _) |) P+ J: w
  28.                         //Console.WriteLine("补全链接:" + fullUrl);& [+ ]8 F! j  p& p: h
  29.                         //Console.WriteLine("…………………………………………");* H* L9 O% |; O# v
  30.                     }' `2 H  m  s9 o, H
  31.                 }
    / @$ B8 ]$ ]; N' n3 H; m. X
  32.             }$ Z! @( X* a, f8 q6 s) q
  33.             catch (Exception ex)# ]8 h; n# ~& c0 Z0 Y
  34.             { }
    , P" K4 h9 V% ~6 F9 @5 s9 G
  35.             return allHref;
    0 ~; F" c1 L9 P- L9 x& E
  36.         }# r& Z0 J! T, G7 n9 s& `  L
  37.         #endregion
复制代码

' B9 p0 r/ j$ Q1 D" ~
/ F* Z1 q) a, q2 d8 T8 j

  1. % F2 o% q' |5 T% x2 ]

  2. + X- h( Q5 `' N

  3. 9 M! N% f3 V3 w/ W2 [& C
  4. #region 数据去重
    # s$ ~9 R9 d6 J: n7 g; T* K5 G
  5.         /// <summary>
    2 D" r2 F$ {, ~) P% p) c5 V
  6.         /// List<string>去重. l$ S: A" j, Q" m' u+ O8 o! J3 B4 H
  7.         /// </summary>) g+ s. r5 ^+ [! l' A" k8 l( u! P
  8.         /// <param name="list"></param>
    . d! A4 E9 D. ]6 l9 o  C8 [
  9.         /// <returns></returns>4 E% _) C8 k) V" k
  10.         public static List<string> getUnqueList(List<string> list)
    1 B4 H+ n. E" j
  11.         {7 o' _. o; Q  ?2 q
  12.             List<string> list1 = new List<string>();
    ) k3 D) [2 h4 M2 R+ W1 w
  13.             Hashtable hash = new Hashtable();3 w' e  ]+ o1 s
  14.             foreach (string s in list)
    $ G8 W  F1 \0 n1 [0 k7 Q( I
  15.             {9 r; f7 Q/ C* R9 {! \$ h. a
  16.                 if (!hash.ContainsKey(s))
    ) U9 i' Q4 C+ M; p3 Q2 E, ]
  17.                 {/ {: ?0 J, {/ T6 @
  18.                     hash.Add(s, s);
    3 }  T. r- A, _' x7 X1 x1 ?
  19.                     list1.Add(s);% b# x/ ^4 \; s( y6 N
  20.                 }
    ! a( O1 C. G( V0 {; C" e* H* q, j
  21.             }5 z. ^  j- K$ N8 u* E# S7 s
  22.             hash.Clear();2 I2 r7 X8 c& s) I7 Z" O) n
  23.             hash = null;( x/ f: o! E  C* j$ b  [
  24.             return list1;: N  L2 S' `) j" Y6 z4 H
  25.         }6 \, C4 |" K( l$ w+ A
  26.         #endregion
复制代码
. x/ W+ c9 E5 C) @- \% ]
9 ~. E1 D6 ^: t' `4 a1 ^$ i2 `

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

4 j. q; Z& V% O; \0 @) G- L十分感谢!!!非常感谢!!

点评

缺少一个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* r$ ^" y  f% e" |
十分感谢!!!非常感谢!!

: K. v1 Z# h8 k# M* q缺少一个gethtml,用下面这个:
& e0 y/ _: P9 q2 B3 M7 u
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    . x; s& A2 j0 Q9 o& I/ b/ W
  2.         {
    4 z( M: ~( \0 x- U" t3 M2 M
  3.             string strWebData = "error";& T+ `8 D$ u( P$ W2 R+ f; z
  4.             try' o2 o( n* u) I. |
  5.             {
    7 [2 j2 L- l) }2 V& ~
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient . x" D% k1 C  ?+ y
  7.                 // 需要注意的: & m# m' ^; M: U. n; e
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 1 B% H. M; p2 d. ^
  9.                 //这是就要具体问题具体分析比如在头部加入cookie " H1 G- H1 M! j6 g, V2 I, z
  10.                 // webclient.Headers.Add("Cookie", cookie);
    6 _/ B6 y9 u9 F. l+ j
  11.                 //这样可能需要一些重载方法。根据需要写就可以了. [/ b6 Q4 ^7 ]! A9 z
  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)");
    ! W( t; T. O7 i+ n: d2 Y. \
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    3 f. p. A3 k" Z+ @* W
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 6 _7 j) A5 Y4 v5 b' e; D3 A
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;; V* s" U9 v8 A
  16.                 //如果服务器要验证用户名,密码
    ( [9 X8 i6 o# `8 ^; y) N, [
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); " S4 y# s( r9 L
  18.                 //myWebClient.Credentials = mycred;
    " {: k; w* r8 K
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) + F6 ~) [" {0 ?& I/ k1 V7 K# G
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);# |$ N5 @* N5 T; A
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    7 e( [( j. L' `# y& H

  22. 9 R5 Q  q& w# R, P8 o: f
  23.                 //获取网页字符编码描述信息 2 n7 l$ d$ U9 p+ f( d
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);$ S+ X' D* f9 S/ t
  25.                 string webCharSet = charSetMatch.Groups[2].Value;( d. p; A' g, Q9 X" A2 @  X
  26.                 if (charSet == null || charSet == "")
    0 D6 W) P. R. m! {) m: d( t" Y, E2 A8 W
  27.                     charSet = webCharSet;
    9 |5 s6 f) T% X7 w7 L0 Q
  28.                 if (charSet.Length > 0)2 \$ e' e$ ?( m2 s
  29.                 {
    ' o1 ^% n2 Y& r  B" L
  30.                     charSet = charSet.Replace(""", "");
      t- T7 B$ U. u
  31.                 }
    ' p- h. b* g- w) i$ I$ k
  32.                 if (UseUTF8CharSet)
    5 |3 X8 I1 ~# a! e( u
  33.                 {4 [: B% i% s& [- f( @
  34.                     if (charSet == null || charSet.Length == 0)
    - I# n+ n: C) Z% P" t/ ~. v
  35.                     {
    " w9 t' w5 Y8 m: o, @" H2 D
  36.                         charSet = "utf-8";
    # C7 u3 f8 ^: A9 J- u& N6 |/ I
  37.                     }8 ]8 G0 T/ d: |" _& u8 @
  38.                 }6 d. E' e7 O2 F( Y
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    3 O# ?* b. C+ t! H0 T
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);+ e, X( j1 w: ~; Q, i; d" K: J
  41. 7 {9 ]* r1 ]  }1 b
  42.             }
    8 L4 @: W! t0 `" G  K: C
  43.             catch (Exception)
    0 `  y1 ?2 n" z% ?: Y
  44.             {
    ! y3 D* B& n0 q6 n9 S, f; W
  45.                 strWebData = "error";
    ; ]5 Z6 Q. G) Z% t
  46.             }) S6 y1 s# m4 v! K! L6 D

  47. * }; }, Q8 ]$ x" z. C( Z/ {$ J
  48.             return strWebData;5 v/ I# }: `0 G7 x8 p+ F3 R! @9 o7 ?
  49.         }
复制代码
, C$ e4 V# \  D0 {0 ?+ R. Q

$ ?+ `9 W1 ]& ?
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-15 06:59 , Processed in 0.051771 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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