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加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量高品质·稳定高速纯净IP
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9913|回复: 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 抓取全站链接
    0 S) a/ ~- a- j4 c0 w% G
  2.         public static List<string> GetAllHref(string url)# H; Q  I3 C8 ~2 L3 K/ g2 H$ _
  3.         {
    5 Z0 V0 d' f% m2 g. e- j; t
  4.             List<string> allHref = new List<string>();8 H" w% h. Z% X8 t0 {. @" i+ h
  5.             try- K9 o+ [; X3 q- `9 X9 Z
  6.             {
    ' G0 {3 v8 b5 @/ C
  7.                 string strhtml = soso.getHtml(url, "", true);
    + n& \, p( F9 H5 a. m! \
  8.                 if (strhtml != "error")
    $ D* @: m; v5 l9 W
  9.                 {- f9 P' T6 i5 }! w- F+ N" {
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");3 T1 O, m4 [! T# t: G" K4 ]
  11.                     MatchCollection mc = reg.Matches(strhtml);5 I' }1 w' f* G$ ?" a5 `. g' e  E0 }
  12.                     foreach (Match m in mc)
    % q# U* r& J' ]! x
  13.                     {# \2 x, w6 k( K
  14.                         Uri uri = new Uri(url);9 F6 o5 w2 s; P( ?# g
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    0 w5 O5 B, o7 _1 N6 a
  16.                         string fullUrl = "";
    8 Z6 R& C; j' t, V% ~; J9 t
  17.                         if (m.Groups["url"].Value.StartsWith("http"))5 [" d  a" |: o! M! S
  18.                         {9 o4 }6 E( A# n6 o
  19.                             fullUrl = m.Groups["url"].Value;1 I8 ?  @1 n- n/ P; \& y0 ?
  20.                         }9 Y& \6 }+ y9 n% r  W
  21.                         else1 ~  ]" p9 F9 m* h9 n& P7 u8 g
  22.                         {. m8 Q1 [& W& ]7 X" A( J, c
  23.                             fullUrl = thisUri.ToString();
      }3 K1 x( O0 O
  24.                         }. S' r+ J; c( e, k) D/ i
  25.                         allHref.Add(fullUrl);
    8 T- f( A+ E, F
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ' C1 E& `- H* R! D7 S3 `
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);, l) G$ c, K* N3 [7 M
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    7 }: M! j0 M. p1 N, F# Z7 z' x2 c
  29.                         //Console.WriteLine("…………………………………………");
    9 S1 f$ i. n; ?. i# T& ]9 I
  30.                     }( f, U& y8 Q! n- @$ x
  31.                 }
    5 w! N6 e$ O% l5 T1 M) F  y; C
  32.             }
    $ w6 O) f: E1 N3 q+ K" s6 q
  33.             catch (Exception ex)
    0 I: p, Y; ]2 L
  34.             { }5 U; S- K+ ~0 O
  35.             return allHref;# E$ O8 Q. y; t: D) a( u1 Y" v" j- ]
  36.         }2 V/ i) W; c2 c6 z/ _
  37.         #endregion
复制代码

+ F( Q7 h' H% r# {& I( V$ W5 {6 ?" m* s7 o9 x# _* j9 R* L: }

  1. 5 p$ u1 e* X) }8 @/ h" [

  2. ' Q# W2 G" }4 \) r3 G
  3. , y7 r+ m4 S- T6 i0 G
  4. #region 数据去重
    # E* {- i6 R! T& ?! V2 h, m
  5.         /// <summary>
    9 a% j7 ?) ^$ k8 W! @" P
  6.         /// List<string>去重- z2 b" B) \; {8 ?# t: [0 a
  7.         /// </summary>: f$ a7 H- Q. J4 e2 s) h% l
  8.         /// <param name="list"></param>
    1 j% d4 `. f, K5 ^. a) p9 e
  9.         /// <returns></returns>
    : W+ I3 P9 }* Y, E
  10.         public static List<string> getUnqueList(List<string> list)
    . y+ t: C4 J2 W/ i! x
  11.         {
    $ t7 y5 n' o" {1 U
  12.             List<string> list1 = new List<string>();* t  p) w( a8 U" k
  13.             Hashtable hash = new Hashtable();
    + }# J+ |4 ]8 i. l
  14.             foreach (string s in list)
    5 p8 G2 j! N( c* _3 q) k7 J
  15.             {3 r% a! f; F! L* `* k
  16.                 if (!hash.ContainsKey(s))
    7 l/ H, w$ Y2 F: c
  17.                 {
    3 p+ D' v7 t& N. i
  18.                     hash.Add(s, s);
    % c- Z+ A  I$ |+ N, `
  19.                     list1.Add(s);
    $ w1 d/ A3 L; A$ {% S8 N
  20.                 }
    * A0 f/ N' A# x. s1 Y  B! U
  21.             }
    : U* f7 c; |# y) C9 [
  22.             hash.Clear();0 B" ~/ u  @0 v3 S! M
  23.             hash = null;; _" Y7 s8 n; f5 \
  24.             return list1;0 x  h/ L' Q% J0 k8 ?  {
  25.         }  l8 v* B8 {- q% A  `
  26.         #endregion
复制代码
* Y9 g  W: t- J& ]+ X
6 h/ n& ^- G. {$ s. U

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
" }2 l( h* i9 O0 Y' ~, K1 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
2 j( Y0 f- c; O7 w) u& _6 @; z4 a十分感谢!!!非常感谢!!

1 r7 a5 C8 V; L  z0 q/ }% d* \缺少一个gethtml,用下面这个:
* T& V: b5 c. k( y) u
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 ' W; ^: a; i8 ~2 Y% H
  2.         {
    . |" ~9 D) i$ j1 ~$ k
  3.             string strWebData = "error";
    3 g0 L+ Y) f# P
  4.             try
    ) q& G: w7 l( j( h! S
  5.             {% r, k" x9 ?& {7 ?) V7 s1 O
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    % q) k. s0 J# Z7 S9 s' p& \5 E
  7.                 // 需要注意的: . e, @' \  ^2 ~9 T4 x) R2 H
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    * d& {! [4 ~2 a; U- q
  9.                 //这是就要具体问题具体分析比如在头部加入cookie * J$ ~. N: E7 G( _0 d: e9 C
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ' ~$ @2 h1 N9 A; N2 o
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ) Q( t% M& j, p8 b  S7 n4 \* u6 Y1 P6 N
  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)");2 i3 Q/ g# d# G: I
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");5 g- z6 r& I* B9 `" k% _
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    0 ]& I- n! e+ N' x9 Z- _8 R% w; f
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;, }: {* ]$ N" S
  16.                 //如果服务器要验证用户名,密码
    ' l6 d5 o0 \& R. a  A5 s( a
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); , x) \  n: y( L: I7 j- F
  18.                 //myWebClient.Credentials = mycred;
    , A& ~, w# f  x; x
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) % [+ I" O9 L" \4 E$ y
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);: U2 g# S8 w, G- z$ Z; X% G1 B
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);$ w, p( V% f. i2 w

  22. ; _( Z1 _* x% o2 {: B; d. Z
  23.                 //获取网页字符编码描述信息 6 p- |$ l0 g5 t& |
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);- G; B$ T3 {3 b9 f( f. v% y
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    8 l) r+ u9 t4 V- `
  26.                 if (charSet == null || charSet == "")& q) N# T" p7 O1 M" x5 x
  27.                     charSet = webCharSet;
    & }# {  A( ~& m$ U9 {- Q5 _* D8 {2 f4 w; r( E
  28.                 if (charSet.Length > 0)* }3 ?) d. o* d7 `1 ^4 i: C+ l! f
  29.                 {
    & B# Q  T! G$ Q- K+ K+ v8 A, x
  30.                     charSet = charSet.Replace(""", "");! k- a0 Q) Z! F
  31.                 }! S/ A- r7 D9 C; ?# R8 M8 {$ J
  32.                 if (UseUTF8CharSet)
    7 ^1 F3 k3 n9 h5 L! v, g
  33.                 {
    ( N, b, W+ o3 Y. H6 F# o) B8 Z. Z& M% U
  34.                     if (charSet == null || charSet.Length == 0)
    9 S) W# R8 n, u& D: B. V
  35.                     {
    2 N8 D7 i! z7 @; I
  36.                         charSet = "utf-8";1 l: _% \4 c, _; h; v; L- X' w  b
  37.                     }
    $ ^; F4 q+ I1 e$ U' e) r: r
  38.                 }6 o2 A) V, H3 [# e3 t3 z
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)8 r6 l5 ^, m3 a- m  H  e  q# f
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);; _$ z8 v# @; {. l/ [, e
  41. $ H7 `4 J2 g5 R
  42.             }
    ) `6 o7 ^7 t: h1 y0 y. h. ]7 X. b
  43.             catch (Exception)
      m. ?6 y0 x& Y( @( R
  44.             {# |: x8 q% F: n
  45.                 strWebData = "error";9 z$ B$ p& b9 p: e' o0 P
  46.             }7 B! f% B% q" Q* ]( X8 A& W5 t- \
  47. / t7 V% w3 a8 @$ L
  48.             return strWebData;0 {* e! P, p& x; T
  49.         }
复制代码
1 o0 F, R5 k1 y5 }3 j* J' j2 d9 P
, R. e# K3 y5 J! o9 q; g
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-26 15:19 , Processed in 0.089437 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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