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/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9819|回复: 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 抓取全站链接$ a* ~0 n1 w7 E5 f$ X6 @
  2.         public static List<string> GetAllHref(string url)
    ! t# j% N7 O2 b* x7 Y8 g3 K2 k3 j. h
  3.         {
    , r3 s8 y! y1 \0 ?. `% O
  4.             List<string> allHref = new List<string>();
    + [/ z* H3 h; t& U. x9 ]# a7 G
  5.             try) o4 D$ F& ~  Y3 j% A6 r
  6.             {' U# a* M; M$ ^+ V: R
  7.                 string strhtml = soso.getHtml(url, "", true);
    2 H4 s7 t$ n6 `+ G; ]2 u7 Z
  8.                 if (strhtml != "error")) A+ U& g1 r; o) W1 [
  9.                 {
    , x1 b3 I  B, C6 ~8 y
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    $ f! O) n8 k) _6 B
  11.                     MatchCollection mc = reg.Matches(strhtml);
    / j+ R& k: d3 p9 @
  12.                     foreach (Match m in mc)
    0 \2 x- P+ ~! ~- J- U4 J1 [0 [! g
  13.                     {
    4 `6 x0 u3 n3 f+ `) h. u) M8 k+ C. y
  14.                         Uri uri = new Uri(url);
    , I+ u2 s+ _& k6 _5 {$ M  q
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);! H( ?9 m7 M4 L
  16.                         string fullUrl = "";6 ^9 v5 U# g( m( U. \/ |
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    4 s7 s1 X2 u8 W3 x
  18.                         {- t9 l" O! @. y1 y9 M8 `; m  x
  19.                             fullUrl = m.Groups["url"].Value;; |' q/ f" \4 E3 i, \6 ~
  20.                         }
    ! u7 h! K6 e1 Q" [/ M) k; c
  21.                         else+ t! V1 E5 n4 X3 z- X( ~4 p
  22.                         {
    - T. j' w( T# \9 Q2 k& D- n/ t
  23.                             fullUrl = thisUri.ToString();
    1 t9 |" w' C; K1 r0 X" s: t& V
  24.                         }! ^* Z4 N# d  g6 V* H
  25.                         allHref.Add(fullUrl);
    0 y6 L9 f+ v3 H
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);6 ~: {1 F5 s/ C1 W
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);$ ?, _5 k2 M# Z: |/ Q
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ' t% k/ B6 |# ~. p9 H
  29.                         //Console.WriteLine("…………………………………………");" V: }: }. ]1 d2 e
  30.                     }
    6 }6 Z/ K8 a' \- `
  31.                 }
    ' j2 w; J0 C& o
  32.             }6 n0 C7 r' z, f
  33.             catch (Exception ex)
    3 W4 Y0 M5 R. ^0 h3 M
  34.             { }
    8 _7 R% ?% O6 F, b4 m% F! q/ X
  35.             return allHref;
    ) z" O5 @) m! L' Q
  36.         }
    ' q- o! `; e# r: ?# [- D
  37.         #endregion
复制代码

& A; l$ N4 X) F* v4 A4 P4 a- G9 A, E+ F7 }$ b0 j8 d- N

  1. 0 ~+ f3 c9 S( e
  2. 8 j" c4 M- ~- p) }- x
  3.   v. n' x9 N' K/ B; F; {
  4. #region 数据去重
    ' N, h5 S# O$ s8 Y8 p8 _
  5.         /// <summary>9 ^; A* G/ ]4 [- J
  6.         /// List<string>去重
    9 [; _% m* r( A$ v$ s
  7.         /// </summary>2 a# \& _) b% s
  8.         /// <param name="list"></param>/ S8 ~) N$ I& _' P
  9.         /// <returns></returns># h2 B+ x0 v4 Q
  10.         public static List<string> getUnqueList(List<string> list)
    4 R7 h- B. E9 U6 X7 g( a. C
  11.         {
    : d) o# E" h) ]+ l  d, }
  12.             List<string> list1 = new List<string>();
    " c6 z" Z" \: _0 m; k0 _4 j% u2 G
  13.             Hashtable hash = new Hashtable();$ m( M; c6 l' W) ~
  14.             foreach (string s in list)- I9 T5 w7 ?; S5 j
  15.             {9 H5 ]0 v8 L8 J: [* V& D
  16.                 if (!hash.ContainsKey(s))1 I3 c# Z1 j( l8 E0 U+ x$ r
  17.                 {
    5 {' O% ^( y/ V8 \
  18.                     hash.Add(s, s);
    : Z# }- F) P& ^: y( R/ y9 {1 D
  19.                     list1.Add(s);5 H, Y; R* ^% ]* o  j* C% p+ L
  20.                 }  \5 D8 q0 E& T2 L
  21.             }
    4 u' J) T/ R6 k, A
  22.             hash.Clear();
    6 V. `% S4 G* `/ g/ c
  23.             hash = null;4 [* v5 x* u8 l/ {( k1 U
  24.             return list1;! }0 N& p% U4 Q/ g8 [
  25.         }
    , s' b1 c% l( q- x- G  t* V9 {8 i
  26.         #endregion
复制代码

: L/ O! y4 N! x: ^- o( z/ G  q
) S  l6 z% D) H) c! ]# Q+ ?

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
1 k  E7 D- M$ o* F# \# J; _+ A- h
十分感谢!!!非常感谢!!

点评

缺少一个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# O! S9 P7 N& t" M. B# c" p9 d" c
十分感谢!!!非常感谢!!

: {) M3 H6 A6 {3 e' a! \1 Z3 X: i缺少一个gethtml,用下面这个:
% y; A. W7 |0 @, d4 B. `/ U
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    - A: B8 R# h0 o. p" Z% V' ]: S
  2.         {
    % G; N) R6 k  q7 e
  3.             string strWebData = "error";
    2 Z6 Z- a2 h$ Q) o2 P- F
  4.             try
    , m3 m" Q! X  c5 s) a" O, Z
  5.             {
    - L" o+ U$ M' Q" D$ r/ ?
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    2 h, V9 i- g. S: c, I* b
  7.                 // 需要注意的:
    ' k$ X7 y5 ]1 D
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ) j' R( j' d5 o4 I% ~
  9.                 //这是就要具体问题具体分析比如在头部加入cookie . P( F8 Z0 `( C6 Q" u
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ' W- U' d; c, N$ i5 E
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    $ \, L8 n6 p; ?8 Z; Y6 @
  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)");) D9 i0 _$ U/ z! ?# H/ j( R6 H
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");* Y3 L1 }& G) l+ Y0 V8 G" G
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    - l( b6 W  D' J
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    4 _# X2 p" q4 Z3 m" I( I
  16.                 //如果服务器要验证用户名,密码
    5 k! [0 S9 B& X( s
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ) {) s6 N# I% h/ r
  18.                 //myWebClient.Credentials = mycred;
    ' `; {" W; q1 M, N
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ' ]7 j- l7 J8 {' ~
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ) |2 |* R$ L0 d" ?2 }% \
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);' p$ \1 Z* g! M5 S4 o
  22. 3 t" a% J% g6 x4 e
  23.                 //获取网页字符编码描述信息
    * }% t. \6 i; v7 d3 K9 {* q
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);* Y: g) h) ~; l4 P& T; s0 k  F/ W8 R
  25.                 string webCharSet = charSetMatch.Groups[2].Value;9 T8 ^0 v. V+ R7 J) J/ n' Y
  26.                 if (charSet == null || charSet == "")* o# P8 m$ Q, u9 W+ l  w8 R
  27.                     charSet = webCharSet;
    4 {3 M4 \% k6 M$ @* d' s
  28.                 if (charSet.Length > 0)
    ) R# I/ o5 c+ u+ J9 Q0 ]& k' g
  29.                 {) a% P  e, b- y' \  W+ R
  30.                     charSet = charSet.Replace(""", "");
    : P8 Q6 ~2 c9 }( H4 m4 y& {! f3 L" {
  31.                 }' L; |+ S( n7 f7 `  k
  32.                 if (UseUTF8CharSet)
    ! M2 W. P0 r/ Z( m4 }2 J
  33.                 {
    0 x, j* L5 l( N* n2 M8 ~' @
  34.                     if (charSet == null || charSet.Length == 0)
    6 p6 E2 M' n: H. Z
  35.                     {' v# Z7 X* @7 Q. \, f- B
  36.                         charSet = "utf-8";5 }7 m1 O. A0 O. B- y" K: p2 q
  37.                     }
    3 m% {4 {  s& C3 u
  38.                 }) ^/ e  D0 W+ F' @; @, i2 t2 x
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)! @2 F: [* s5 o0 ~* V7 P* l. N
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    5 f' s. k* l" |+ W$ x
  41. 7 q1 m& ^; y& z) Y- A- ^' M
  42.             }+ X( C  [& Z7 w. h
  43.             catch (Exception)
    ) u% D, Q& B. R
  44.             {
    $ U5 t8 s/ n! F: W' O
  45.                 strWebData = "error";
    6 v5 h! r9 Q# C7 `4 E: _3 G  H+ a" B
  46.             }9 [6 k1 s+ Z2 m1 Z. o7 ~* ]+ U

  47. % o$ @. m9 j# c& t& l1 ]: P
  48.             return strWebData;  }. f) V9 q( x5 n1 T
  49.         }
复制代码
( _+ _9 L, ^2 l1 i& l, u8 y

/ p, u$ R  [7 |( X; G- Q5 P/ O
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 19:20 , Processed in 0.052574 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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