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/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%
DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9938|回复: 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 抓取全站链接1 R+ g5 A$ F1 q; I
  2.         public static List<string> GetAllHref(string url)! b9 G% n% X- \2 f* j
  3.         {
    $ D/ ?) F7 Z9 H! n( N1 N, k5 f
  4.             List<string> allHref = new List<string>();/ _( H: D* J, `, B/ S
  5.             try
    # \) M) F9 S4 Z3 o
  6.             {
    7 A' ~, X6 N- a1 V7 Q$ S0 I
  7.                 string strhtml = soso.getHtml(url, "", true);. T  W' U5 Z# I3 G' S
  8.                 if (strhtml != "error")6 C6 _8 @$ \5 F9 |8 y4 C( v) }
  9.                 {
    - Y! n4 k6 L0 a* m% {0 b9 B
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    + F. ^! u$ K& p2 I0 p
  11.                     MatchCollection mc = reg.Matches(strhtml);* p  @5 j3 G& N+ a6 e+ ^
  12.                     foreach (Match m in mc)- I- D$ E4 ?9 h
  13.                     {1 U+ ~* A$ V" N+ E  ?( M
  14.                         Uri uri = new Uri(url);+ w+ c2 F9 b1 K$ i* C) N' X5 q
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    9 k" B3 k$ Y" @' Q
  16.                         string fullUrl = "";
    ! k1 a$ I4 o0 ^3 j' E% `: \
  17.                         if (m.Groups["url"].Value.StartsWith("http"))( ?3 u5 s1 U( ]
  18.                         {
    " {7 Z6 j9 M! g5 N+ o( H
  19.                             fullUrl = m.Groups["url"].Value;$ X3 [0 ~+ Q5 }8 [7 o: ]
  20.                         }
    ! l! @6 s+ r! c
  21.                         else' h. N3 N( i! n2 ?
  22.                         {- K  p, u$ f: j1 E9 \; G
  23.                             fullUrl = thisUri.ToString();0 d) K8 V3 _! A7 X  s$ \# Q
  24.                         }
    * _/ X# j. y* \/ ~! F: w
  25.                         allHref.Add(fullUrl);, O+ o0 O3 M( \- p' e, j8 R6 U0 j9 m
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);- t8 D$ u" [  K4 |/ m  ]* `& G
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);' z. r  l& \3 _% x( H
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    : v4 c( s/ S2 p0 V
  29.                         //Console.WriteLine("…………………………………………");& w3 u# l. x8 C
  30.                     }
    , \( z5 p$ n8 y& }+ x5 [7 r5 b/ C
  31.                 }
    8 T) T* D; w1 n' [1 d; i# |
  32.             }
    0 S8 S. A% {* T) |! q
  33.             catch (Exception ex)1 o( D$ n4 |9 R7 k  }5 N
  34.             { }
    & g4 C4 g$ C; x. v7 \
  35.             return allHref;7 u1 {) O8 M, E9 q7 t% A
  36.         }1 o0 ~+ B5 }" ~2 q8 |! O- Z
  37.         #endregion
复制代码

6 \! f, t+ f! l& `; B( `: r$ I6 b/ X( }% C% t

  1. 0 {, b9 E: D4 J0 I+ W/ J, B" L# k

  2. 1 e+ }1 u- {# Y  U

  3. 4 g) x% s) }; T8 \3 b7 t
  4. #region 数据去重4 T6 Z7 K  f5 d7 [2 [% S, H4 Q
  5.         /// <summary>
    8 J# G- E  ~4 g( _) E
  6.         /// List<string>去重
    ; U. L# @- P+ \& G/ `
  7.         /// </summary>% P0 Y/ R$ E6 t3 g
  8.         /// <param name="list"></param>
    1 R' ]3 k. B- j* T, s1 y) @
  9.         /// <returns></returns>( e+ q/ M6 {! F) m; M
  10.         public static List<string> getUnqueList(List<string> list)
    / ?$ Y, E4 j3 ?4 m
  11.         {5 p: U0 v) Z6 l# ]
  12.             List<string> list1 = new List<string>();% x: c) y, M- }# k% T
  13.             Hashtable hash = new Hashtable();
    8 ~. z: J( m3 `
  14.             foreach (string s in list)
    5 v2 n  V. m8 O- V2 q5 L+ P' @
  15.             {
    * g+ k; `% I4 s3 P! B" b
  16.                 if (!hash.ContainsKey(s))
    ' n8 T9 |5 w: g4 w, J( I
  17.                 {6 n/ e& e! a0 C+ ]9 c
  18.                     hash.Add(s, s);
    & f, X+ H( f: G6 H, z. R- K) {. L3 H
  19.                     list1.Add(s);
    ; j* y8 i+ ]. t
  20.                 }2 C1 n+ {- T4 `- E  I" W
  21.             }" \6 u4 c& p; N4 r' ^: Z7 x
  22.             hash.Clear();. ]! Y  \2 {1 [6 S. L
  23.             hash = null;. \. Y9 e: n/ @6 p
  24.             return list1;  {' c# N; Y) I* L9 ~# G& Q1 }
  25.         }: H( u, r7 ~7 G0 i6 S  L1 d0 f0 T
  26.         #endregion
复制代码

% A; ?6 B1 P8 u
# W! p& t# E2 ]# {- N

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

0 w. Y; D' t  q3 C十分感谢!!!非常感谢!!

点评

缺少一个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' l3 k6 Z, |) A' k8 B5 m- r
十分感谢!!!非常感谢!!

9 u/ j. C0 n! `缺少一个gethtml,用下面这个:' U6 t  i$ ?" Z( d
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 % [% Z4 i: g" L3 p
  2.         {
    : \* N3 q& X; s3 Y# a9 e8 Z9 X  O
  3.             string strWebData = "error";6 D9 z0 F+ R" C) X' C
  4.             try
    ( t# K* ?* D5 C$ a" J" m
  5.             {. E  Y# K7 H; S' F% s0 t; z
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ) n+ E* Y# F3 f) J+ H: Q
  7.                 // 需要注意的:
    % \- I7 b, g: @
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    , X' a. Q$ m( ]+ k  Z1 v' e- L+ W) Z
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ; {. V& n4 ~$ _
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ) K# E( J7 q0 d* S. g) C
  11.                 //这样可能需要一些重载方法。根据需要写就可以了* A. o7 v  X! a# o
  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)");& g( `/ Q3 H4 P
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");/ d5 J1 ^9 _" }% u0 _9 z
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 2 N: \& g7 p, w( j, y8 w
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;! a: a2 U. [3 X& @) z
  16.                 //如果服务器要验证用户名,密码 ' w! Q) E0 d8 N2 V- Z
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    , n" W/ M0 t! o
  18.                 //myWebClient.Credentials = mycred; $ f# ^# O' W# ^1 ?1 D! O" ^
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)   _: |  E* ~8 p; k- \3 _; P
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);: o4 D& Y8 B5 J/ f& X
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    2 b. a. n; A9 m; k3 V) d) l

  22. 9 {% ~. E$ V6 V4 |* @  {! m3 F
  23.                 //获取网页字符编码描述信息 ) c3 _& _& r6 J  B* W
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    1 I9 }+ Q- m) c, }" X+ A
  25.                 string webCharSet = charSetMatch.Groups[2].Value;# c& K$ p! |% N( Z1 R& t) b! x
  26.                 if (charSet == null || charSet == "")
    - m. \. J- @' x9 q% ~3 A5 Z
  27.                     charSet = webCharSet;3 [' c( S( K" ]: u0 Y& ?
  28.                 if (charSet.Length > 0)
    # ~7 e0 z% B, P) ]( I( p  t! j
  29.                 {
      F+ [- g, m5 l0 p
  30.                     charSet = charSet.Replace(""", "");
    ' b8 |3 v( n& T1 i: Q
  31.                 }
    & g8 ?  a) _: S1 n& X8 h
  32.                 if (UseUTF8CharSet)  b) y- e8 U: ~" u" n
  33.                 {6 V5 B( ^' p4 X& ]" Z$ h
  34.                     if (charSet == null || charSet.Length == 0)! l9 R$ ~3 k1 ?# [! @7 t$ i% C
  35.                     {
    . t9 \! d9 G' J1 \3 T9 \, P* X, q
  36.                         charSet = "utf-8";
    " Z5 g$ j5 ?! \& K  `2 K9 O$ m0 F
  37.                     }
    * y" h; z+ G$ l! G, e
  38.                 }
    # z4 @% r0 S; l
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    $ J  l0 j) n2 i9 K/ v
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);8 y! r$ q0 ?+ v7 U& c
  41. & d: R6 B4 i# `! a3 b8 B
  42.             }0 m" f- M$ [: V# n: n+ }# }
  43.             catch (Exception)
    ; R$ Y; W6 q# |5 b! d# j& R* g+ l
  44.             {
    $ t, {+ _1 A- Q: C1 r& t$ X, @* j- p! Z
  45.                 strWebData = "error";2 ]8 h2 g$ D5 g$ L
  46.             }; b- @2 |& u6 u; I( U8 u5 n1 @

  47. ' Y2 N: g; C9 l
  48.             return strWebData;) j: A, W5 A$ N! @2 Y. x
  49.         }
复制代码

8 s4 Z) e/ l  z* L/ S9 d# \* [0 A) U: I, y0 F; ^# g7 J! O0 p) V
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-7 17:17 , Processed in 0.052947 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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