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充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手
TK加白户/二解户/FB海外户/GG老户海外CL企业户源头最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审
GG,FB,TK, 欧美源头, 欢迎合作❤️FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天
⚡️Spend.net — 美元卡仅需$0⚡️广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 10133|回复: 7

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

[复制链接]

36

主题

213

广告币

297

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1484

广告币

1826

积分

高级会员

Rank: 4

积分
1826

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接; L$ L$ P# i" C* U' _& k) \( R! a
  2.         public static List<string> GetAllHref(string url)
      N" `# d3 f" u- p6 j, K
  3.         {! o: v! ?$ \& ?# w5 V3 \  W
  4.             List<string> allHref = new List<string>();* x/ f3 ^$ e: i. x1 l8 U
  5.             try8 u9 p3 V  |. q; U
  6.             {
    3 q) N' A4 n7 C  F: A
  7.                 string strhtml = soso.getHtml(url, "", true);* `) P0 J; p6 V, L9 ?5 H
  8.                 if (strhtml != "error")
    - [3 g  G) [. y
  9.                 {
    ( f8 D# p9 V; y/ G1 s! D9 H
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");0 {, m7 Y& j  C' D" e
  11.                     MatchCollection mc = reg.Matches(strhtml);
    $ q4 k0 \/ z: I: {
  12.                     foreach (Match m in mc)
    & i  T$ o7 I+ p! k% h( a: \1 F+ k
  13.                     {- P' d$ ?9 g' O" r
  14.                         Uri uri = new Uri(url);5 z# h- l% A0 ^
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);, i2 \1 X. w$ l
  16.                         string fullUrl = "";
    % D+ M- C5 H8 B0 t5 B
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    - b; [& R1 B# @
  18.                         {3 r2 D) \& z/ O8 V$ |
  19.                             fullUrl = m.Groups["url"].Value;
    9 D% O, ]" G0 S+ G
  20.                         }
    ! d% j0 Q: W% O! V2 W' G! @9 r
  21.                         else
    ) a& H' c% x+ ?, g, ?
  22.                         {9 l3 y7 C5 }  i8 y. P
  23.                             fullUrl = thisUri.ToString();
    1 r- i" k" K5 a8 b  i) B
  24.                         }
    ; o  ?' [; T5 Z1 d5 v9 D& ?8 v
  25.                         allHref.Add(fullUrl);% A# K' a3 O" V* P  D/ j& u
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    # v6 {+ H$ D$ T
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
      a# ?6 u1 T: R! d9 t  ~( T
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    4 p* J# G( K. s3 [- h
  29.                         //Console.WriteLine("…………………………………………");
    8 t: M& A* B! a: P" i
  30.                     }
    2 v* T8 y; l* j$ [
  31.                 }
    8 ^( }$ k/ }4 |/ g
  32.             }) C. `; c) M1 y, G# L& O3 N
  33.             catch (Exception ex)% _7 B; I. m; |: B& g
  34.             { }# T" g. k- e6 K9 h! E) q+ n+ Z4 W
  35.             return allHref;
    , h+ z0 ~: v6 I
  36.         }
    : O( @8 r1 u) V1 [# x3 B
  37.         #endregion
复制代码
& v2 l+ b& u. W# s3 C2 w
9 D) ?( V/ E  i/ R% C# `6 E

  1. # f/ l# f8 C1 k  ]1 Q

  2. ( `8 g/ k* w7 E! I

  3. 7 I8 I( n+ L0 ~, `1 w
  4. #region 数据去重
      D+ @" ?; A& N% b( o4 P
  5.         /// <summary>
    ( G' r2 X; ^. e  |
  6.         /// List<string>去重3 _$ p- d: ^& d/ K  W
  7.         /// </summary>, G: o6 F$ O2 O4 r% V% u5 `
  8.         /// <param name="list"></param>
    # }% Z4 ~. @/ b1 K, X" v6 F' }: @2 C* K
  9.         /// <returns></returns>/ i5 s& Y( f9 \) Q$ F
  10.         public static List<string> getUnqueList(List<string> list)4 i# \4 \: r* a& B1 C& z
  11.         {
    - \/ b- I# ~6 ^$ _2 K( N
  12.             List<string> list1 = new List<string>();
    ) w7 g# B1 _1 V7 W. I6 m
  13.             Hashtable hash = new Hashtable();
    % d/ _; \  U9 t
  14.             foreach (string s in list)
    ! r/ J; H' {$ r9 `/ [
  15.             {
    9 Z% {; n: x( y2 t
  16.                 if (!hash.ContainsKey(s))
    9 Z  }6 M) _: N/ \2 h0 Q! q! a- v
  17.                 {
    5 g& o  @8 B, X) s2 v9 f3 s
  18.                     hash.Add(s, s);
    . C3 W8 ]# D9 S/ {
  19.                     list1.Add(s);
    / l! K& q5 }. U( F6 Y
  20.                 }
    1 `; o: b: x' X6 q
  21.             }8 C5 W/ z, V% o% ^. e
  22.             hash.Clear();
    2 s: P: z, |+ ^$ r- `
  23.             hash = null;: ~. x0 @& ^! c- [  b( w
  24.             return list1;* X! d) P. Z4 ]
  25.         }; ]0 f; [0 `3 Z6 s% l. r4 l2 a
  26.         #endregion
复制代码
. `% [$ n4 i7 P' Y+ L

, E$ T4 A0 y3 c% E+ n4 G8 v

点评

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

使用道具 举报

36

主题

213

广告币

297

积分

初级会员

Rank: 2

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

5 ]! y7 U; v1 C3 M2 `十分感谢!!!非常感谢!!

点评

缺少一个gethtml,用下面这个:  详情 回复 发表于 2016-2-26 16:23
回复 支持 反对

使用道具 举报

2

主题

1484

广告币

1826

积分

高级会员

Rank: 4

积分
1826

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20( A! j- w' n8 W3 @) c
十分感谢!!!非常感谢!!
. F# k$ W4 P8 A+ a& Y
缺少一个gethtml,用下面这个:
  V" D- M7 n! Z
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    5 I& H* @7 X$ @) Y( U4 b
  2.         {$ h: n$ v, k) L/ I) Z3 q
  3.             string strWebData = "error";7 @/ L6 |% g  d$ S4 g/ `+ W
  4.             try4 C+ S) G/ n& J
  5.             {+ C! ~* w& h* ]* j. S
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 6 K# b4 b, F  b
  7.                 // 需要注意的:
    ( g6 V' f3 g8 ?7 U+ \4 _  H" s
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 " v  n/ r8 _& e' J. [
  9.                 //这是就要具体问题具体分析比如在头部加入cookie . F3 H8 ?) i3 ^
  10.                 // webclient.Headers.Add("Cookie", cookie);
    0 ]' k6 K( ~4 k7 z$ ^# r" ], L# {
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    7 a2 K) t0 R, W& E, a' r5 a
  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)");
    4 F# [: _$ H$ u9 u! H8 Y
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");" U2 y  w" _! [1 Q) W
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 & V! j' z* ]: h
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;+ `" [; J0 ]5 ]" n- @
  16.                 //如果服务器要验证用户名,密码
    ' V: l) E0 T: X
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    7 k9 b2 ~1 S1 P
  18.                 //myWebClient.Credentials = mycred;
    + [8 P, \+ v& k; o
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) & Q4 a3 ^$ l5 P
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);0 c4 p: \9 d0 c  G. {
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ( s" n. q. C5 w
  22. & \2 Z+ I* T( s- d5 K2 V$ g3 y
  23.                 //获取网页字符编码描述信息
    " k7 f9 S6 w4 q" B2 U* s9 ^! g
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);+ C; p( N4 c" C, o- s8 t1 A
  25.                 string webCharSet = charSetMatch.Groups[2].Value;8 C% q: I; q, f9 n8 U
  26.                 if (charSet == null || charSet == "")0 s0 O- U9 G7 M" h0 l3 A9 ~
  27.                     charSet = webCharSet;' w5 m! z1 B' w2 W4 ?7 `: c, Q9 R
  28.                 if (charSet.Length > 0)4 q+ X& G8 p+ A6 T
  29.                 {
    , }& m- l# N/ L
  30.                     charSet = charSet.Replace(""", "");
    - [7 U8 b4 Y( b( r9 D  o
  31.                 }/ [3 T8 k' D0 @; i7 r. z! T, U) a
  32.                 if (UseUTF8CharSet)
      D1 S; ^& D* e/ s3 f5 p0 O
  33.                 {
    / ^0 @6 T; g' G# v+ c2 s- e
  34.                     if (charSet == null || charSet.Length == 0)
    - t6 ?/ \. l3 y- ?
  35.                     {# W2 _2 v- I; M$ S& m" ?' C
  36.                         charSet = "utf-8";
    * f/ b+ u( C' U) P& Z
  37.                     }
    - c& N' H" Z6 L& P- L
  38.                 }
    7 R7 I3 I7 D) |' C7 p  J
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    + z' t+ n) W" m2 K& c. W+ @
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    6 l, o( H6 k) R1 h
  41. . `7 y. N& s9 R, K  B
  42.             }
    . @; `. ~- o! d6 q5 w" {
  43.             catch (Exception)
    6 `2 u+ j: I) u4 ]: X
  44.             {, [* ]3 `4 M% v0 C
  45.                 strWebData = "error";( n1 b: Y6 z7 `$ K* s3 x0 G
  46.             }7 p5 a- o2 q! G
  47. 2 w5 X3 y- h( p4 D! r
  48.             return strWebData;7 j2 j1 b* T; C
  49.         }
复制代码
5 J2 z6 q- c4 ]$ {5 V
& H5 ~$ e( e1 z- S& F" g
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

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

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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