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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个寻找顶级电商?AdsBranded等你!TK老户/国内外端口/预审/加白
SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9727|回复: 7

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

[复制链接]

36

主题

208

广告币

292

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接& {# G7 m8 u% x) S4 Z
  2.         public static List<string> GetAllHref(string url)
    # I* x. q" ]2 h$ H5 U4 Y
  3.         {
    ) n8 O: L% `; q/ ~! |
  4.             List<string> allHref = new List<string>();$ ^8 n: t8 \/ ~' O! b
  5.             try
    . }0 S4 e: X; q% Q
  6.             {; H; B5 y5 r7 F# t9 x
  7.                 string strhtml = soso.getHtml(url, "", true);
    7 c+ j) O" z# x% n* j1 ~
  8.                 if (strhtml != "error")
    ! v9 |  |1 S8 L% Q( P
  9.                 {
    ' ?. q+ K6 T! \! c' t# E0 M1 v
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    : [0 U) Y- b: f6 j* m1 p, ~% e# }
  11.                     MatchCollection mc = reg.Matches(strhtml);
    : [' t5 Q5 L# w" {8 {7 ?
  12.                     foreach (Match m in mc)
    0 a( Q6 E8 f0 D$ Q$ D
  13.                     {4 d8 r, a+ m) d3 C! O
  14.                         Uri uri = new Uri(url);+ Y, y, G# S% [4 g
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);3 A) W  R# e* G; \$ F$ L
  16.                         string fullUrl = "";9 v/ w( p0 X% ]0 x% A- J
  17.                         if (m.Groups["url"].Value.StartsWith("http")): E5 G( O1 v8 i" A: E/ B$ |
  18.                         {
    & p( @' T9 Y, d- B+ f3 O
  19.                             fullUrl = m.Groups["url"].Value;. C1 w/ z# o. l# I$ L  r
  20.                         }
    2 ^9 ^  v* ]) \- [7 j$ n  x; c) @1 F, {0 H
  21.                         else* X2 p" w7 t2 h
  22.                         {
    $ f7 j4 P4 e  B! V$ [4 c. G
  23.                             fullUrl = thisUri.ToString();/ ~9 o1 e" |( L7 i+ |
  24.                         }
    ' o: N5 s& U+ L5 {2 B8 ~
  25.                         allHref.Add(fullUrl);
    + t6 s* G. G1 F, U
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ! k, E# Z$ \& Z
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    & W* g* U, y3 [6 N; R, T. S  ~
  28.                         //Console.WriteLine("补全链接:" + fullUrl);, t8 Z& C: K" s
  29.                         //Console.WriteLine("…………………………………………");3 D% M- t% G5 K( ~
  30.                     }
    9 q6 X$ s  ^4 F, ~# a$ E$ e( a
  31.                 }
    0 g, x2 n- o) E' U8 ^1 U* H7 ]
  32.             }
    / J8 a  n! R* Q
  33.             catch (Exception ex)/ A7 I0 P, X! X9 c0 {) \3 ]7 l
  34.             { }: ^; x% F5 z1 e. Q, p! B
  35.             return allHref;6 }5 x$ y+ I6 G+ l5 c& o
  36.         }
    6 b. @1 ^# }! l0 L& B3 V3 N6 `5 ?
  37.         #endregion
复制代码
! N) ?; Z. T1 |" W: q, w

8 j% D5 F4 {. X; R

  1. : l7 c' v  j, ~
  2. 2 H3 _  p& `5 @4 ?  y" ]# {0 x+ G

  3. 1 Q' e# |+ n8 v& `: K1 H* J
  4. #region 数据去重
    * ]9 r3 S+ T8 F" X3 u" r; s
  5.         /// <summary>
    - D! H. C! H( ?1 E1 k! b
  6.         /// List<string>去重, F5 |7 s  R: m$ \( v% J2 ?% f1 S
  7.         /// </summary>
    + R7 `# j8 b7 ?$ l
  8.         /// <param name="list"></param>3 N2 }' x* l, w/ s
  9.         /// <returns></returns>7 [6 I7 G' }0 L& t& |7 U! J
  10.         public static List<string> getUnqueList(List<string> list)
    & _& H8 l. J# p/ j4 ^4 _( V, l* W
  11.         {& _* `* }- r& }' ^
  12.             List<string> list1 = new List<string>();- c! N/ ^, [7 _. m- j
  13.             Hashtable hash = new Hashtable();
    ) f0 ]" }: w2 K0 ~
  14.             foreach (string s in list)
    ; `8 e! i; I; H1 g( V& x- s
  15.             {0 y2 Z8 N- e/ ]# O
  16.                 if (!hash.ContainsKey(s))
    ( Y: Y. v2 @/ |% Z0 {# `+ Z% U
  17.                 {9 S" {4 ^/ n) M8 j) n5 H9 P3 J/ _
  18.                     hash.Add(s, s);$ `1 S3 y  A% H& `/ i
  19.                     list1.Add(s);3 g6 m, o2 l: ?3 G8 x3 y1 U2 l0 O
  20.                 }
    + J  Z% I; w- j
  21.             }
    + w  n) O* N$ ]# ]3 B- P* A
  22.             hash.Clear();; F5 a3 `' j" n" b
  23.             hash = null;
    " Z) \' B- f8 S6 X, b6 H
  24.             return list1;5 }, \% p$ z4 C  B( f- a
  25.         }
    , b2 t, y7 m2 B, ?6 g! j2 Z
  26.         #endregion
复制代码

1 j0 h5 R- o7 ?  Z$ R* f% L, M- o' _: L8 e3 E# k% S% V

点评

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

使用道具 举报

36

主题

208

广告币

292

积分

初级会员

Rank: 2

积分
292
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
( \! W% o. B( N( I4 G3 K  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
  n, B4 f6 e. s' y( {十分感谢!!!非常感谢!!
& ~0 J- k% Z/ ^0 E) d, P/ p
缺少一个gethtml,用下面这个:& Y8 F5 x5 B, O  c" v( T
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    8 M' m5 V  {: h
  2.         {
    8 s- P  A# o2 f- E% I7 w6 c
  3.             string strWebData = "error";
    0 @# b0 q" B) {" ?9 \% W, m
  4.             try' c9 c4 B7 B' |- u9 ^
  5.             {0 `% a7 L, u0 I& Z/ W
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient & _% a9 I! \  j. U
  7.                 // 需要注意的:
    9 H7 E: z; Y; i) J& I, U) b
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ; X4 I" g$ ]) n
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    . W. a, U% D+ b7 [8 @% W3 |, a6 h; D
  10.                 // webclient.Headers.Add("Cookie", cookie);
      Q7 v5 R( G6 {- E1 q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了: r+ |) m7 t  _# m+ U4 s
  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 D4 S; d' r% m# I
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    + ]& N$ C  k, W! l
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 . {* w+ K, _* Y, w
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;" }& v- h  h: ~8 Z- u/ r) |3 T: [8 h1 a
  16.                 //如果服务器要验证用户名,密码
    ; F" n1 G3 `& |. G
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 3 U3 |$ \! F) e4 Y; X: J
  18.                 //myWebClient.Credentials = mycred; 4 [* U" D, [6 B. m" ?. N/ i
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    + n0 f3 }6 m6 Z+ T- x1 N
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);6 T$ [! z2 T1 [; W+ @) g
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);- A7 [" H$ V- p9 k7 ?
  22. . d9 s1 v. ?( o! d
  23.                 //获取网页字符编码描述信息
    ; C8 p: _; Q1 l4 I; G. v* t
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    : z$ a: @$ e3 c+ b% m
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    / [8 ]  ?1 U: y8 I% H
  26.                 if (charSet == null || charSet == ""), m- v& V' G5 A; V* O  [
  27.                     charSet = webCharSet;
    $ n$ M( n# c$ K) d* V( @
  28.                 if (charSet.Length > 0)# v# ?+ z  Y; {. q' f% p
  29.                 {
    + I  I- Y  H6 i/ C4 b/ ~5 I
  30.                     charSet = charSet.Replace(""", "");0 j6 e  p/ H, ?( R% b* ?* L  P/ ^! d
  31.                 }7 ~* }- k1 R" f! [: d( y
  32.                 if (UseUTF8CharSet)
    % d: m8 b( P, y: P! D& |
  33.                 {
    + U8 O2 o5 B1 g- g
  34.                     if (charSet == null || charSet.Length == 0)
    & r% T3 G. R. \$ Q
  35.                     {
    : `) u1 ]; D2 x( n' r
  36.                         charSet = "utf-8";3 J4 N# r& x/ L  U0 X3 @- f
  37.                     }" K' Y: P7 c. o
  38.                 }
    4 @8 t, W3 q; d7 n/ G/ S
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    ( p) ~. i& c2 q* f5 I
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);/ }/ C# f% N9 f& j

  41. 1 g* Y) `9 I9 \$ S8 c
  42.             }" I5 L% _+ v& Y* @  q
  43.             catch (Exception)- w$ B1 ~: y) U% Z
  44.             {1 U( N; c' m) P% m
  45.                 strWebData = "error";' C$ p( y3 n" v3 |
  46.             }) z" n1 z' z3 Z) B
  47. ) J9 ~4 t6 a% U) @7 N9 {" T
  48.             return strWebData;/ q+ l- Z9 L$ ?, b; p' X
  49.         }
复制代码
* I0 y" L5 v" o3 G

! X! g: X5 I( M% F; b
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-1 18:02 , Processed in 0.052305 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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