AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
⚡️AdsPower:安全不封号,高效自动化广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN
7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值Facebook 批量上广告
尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)
⚡️TikTok企业户,bm户,账单户FB企业户,TT老户,GG老户源头海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
PTM虚拟卡[OPENAI+全场景通用]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量->Tyver SPY汇聚海量广告创意
高质量代理⚡️住宅⚡️移动广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9641|回复: 7

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

[复制链接]

36

主题

194

广告币

279

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1474

广告币

1817

积分

高级会员

Rank: 4

积分
1817

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
      q4 C# W$ q5 y: A! A/ G* h
  2.         public static List<string> GetAllHref(string url)
    : r$ a% y! G8 u
  3.         {& _! ~. Z" Z( \; e+ l3 ]) c( V
  4.             List<string> allHref = new List<string>();1 d3 J1 L+ a' ]: _$ f9 R
  5.             try! A, N; ]5 e- D2 ]
  6.             {# j( J' A4 h. t: i5 t+ k
  7.                 string strhtml = soso.getHtml(url, "", true);) a% p& w' J% n* s; Z$ A. u9 i4 }
  8.                 if (strhtml != "error")
    ) n) y2 O" ^9 o: B/ Z
  9.                 {
    + M( U) b: A- I0 C. N5 e
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");3 `' O% p7 M+ ]5 [$ ~$ I
  11.                     MatchCollection mc = reg.Matches(strhtml);% `8 j) u, r2 S7 s: a
  12.                     foreach (Match m in mc)
    / V( A8 p# z6 @! d( [. d
  13.                     {: ?; g3 q  G4 O. X; V
  14.                         Uri uri = new Uri(url);# W7 v- {4 b  @! L
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);, B% Q0 t8 P7 m. h" v; t( S
  16.                         string fullUrl = "";
    ! O8 ?/ |" \! |" N$ E+ O& F8 r
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    5 t& d/ L' h  B/ i$ B
  18.                         {
    ( d3 u3 e, q; d/ K
  19.                             fullUrl = m.Groups["url"].Value;  x/ p# V: [+ S, W" B% \$ J
  20.                         }9 m! B6 r0 D3 w. ]
  21.                         else4 \3 X' S) A7 A/ }& U, \
  22.                         {
    , z( G5 y" J0 p  c) Q; G
  23.                             fullUrl = thisUri.ToString();3 g2 N$ E3 Q4 c$ u6 ~9 U' d
  24.                         }
    4 J4 I, _0 }7 X( G
  25.                         allHref.Add(fullUrl);
    ( g0 Y8 X) @3 w. r6 [) b0 v7 n- D
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    # L2 R# ]% j# L5 X
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);" ~" A1 u: Z* ~# N9 p. S: S4 `% Z" r
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    8 B& m, e+ @! }# J" X, D3 y
  29.                         //Console.WriteLine("…………………………………………");
    2 _+ _$ t" P# H' R6 x
  30.                     }& [6 F% z1 e. Z% w1 i' X
  31.                 }
    4 y9 K' [' m, H' d
  32.             }5 _9 E' B( r* ~' ]  K; P1 i0 ?4 M, Q
  33.             catch (Exception ex)
    - w7 v+ D+ ~1 e6 Y4 L2 L9 d9 P
  34.             { }, U& k# d, G* t0 M* [
  35.             return allHref;" j/ {/ ^* H- S; L; A
  36.         }
    5 y7 M6 I& j; S" Z( Z( S' Y; h6 T
  37.         #endregion
复制代码

0 `6 O0 l- F7 K2 r; T  d  I* v1 r
# `7 R" h+ W- ]; S# M
  1. 4 b0 ?( A- }3 p# Q8 Z" i( Q
  2. 5 a- k  n/ M. ~/ D

  3. ( S% Z: N- p% h/ Y7 Q6 B
  4. #region 数据去重6 x3 Q: I2 W8 F/ V
  5.         /// <summary>
    ) F0 c  O( m3 B- I& V* u; V
  6.         /// List<string>去重
    . U- c4 Z+ e& G. B9 `7 H
  7.         /// </summary>( H) [; w) L$ k* b
  8.         /// <param name="list"></param>9 n& h8 |' M& B+ t
  9.         /// <returns></returns>
    5 I1 g( X" m- Z1 h$ h2 ~% e8 |
  10.         public static List<string> getUnqueList(List<string> list)6 j+ t+ w0 g( T) h1 h
  11.         {
    % H/ [; h) s' v! q  ?5 b( H" O
  12.             List<string> list1 = new List<string>();
    * u: Y' K* j; n0 @" e" u: O& `) b
  13.             Hashtable hash = new Hashtable();
    - l2 m! S  N& e, v. {4 Z
  14.             foreach (string s in list)! T. |) l5 Y) I* g  q5 D/ K
  15.             {
    - r3 P5 a% `6 c& E
  16.                 if (!hash.ContainsKey(s))6 q9 I3 Q5 s; u3 Z4 x, f7 t
  17.                 {
    * Q0 p6 F3 n. i
  18.                     hash.Add(s, s);
    ! c: E- B0 p, d  M$ M* }. ]7 B/ g2 N9 A
  19.                     list1.Add(s);
    - O! Q+ F) {7 U' Z; n* j( y
  20.                 }
    ; m0 C" s' L: P, O  X6 Z9 u& K- g
  21.             }
    : g, n3 S9 p* L2 t" |+ P5 j- T
  22.             hash.Clear();/ N& J+ P, j5 S, G( A( C
  23.             hash = null;1 a) J0 \0 ~3 j* C
  24.             return list1;
    9 g9 i, x1 C' E6 T9 Q, R* Z
  25.         }/ w$ Q6 j# U3 b
  26.         #endregion
复制代码
/ ?! n5 X4 F$ H0 G: I

6 }1 p- Q  P, @( }5 f0 Z

点评

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

使用道具 举报

36

主题

194

广告币

279

积分

初级会员

Rank: 2

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

& i, p% R7 `4 i十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1474

广告币

1817

积分

高级会员

Rank: 4

积分
1817

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:202 ]" {- c2 N4 ?0 p1 a/ m
十分感谢!!!非常感谢!!
- D5 u8 P2 ^) b- i4 r1 N! s% {2 t
缺少一个gethtml,用下面这个:8 L1 j  @' z8 Y& z' R1 @7 J' S4 O
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 $ o- t- H3 |  @) w, M
  2.         {, n8 P$ t2 D! ?0 T, r# W0 q
  3.             string strWebData = "error";) n$ p3 Q( M$ }$ {) |0 r. Q
  4.             try
    # L  e# b7 y* `4 J7 z, n
  5.             {
    4 p4 ^4 c9 s* l# F( r, |- T6 l4 q
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
      }8 J' h5 B! d* `( B6 ]
  7.                 // 需要注意的:
    % _5 F1 D+ A$ c- _3 D' r2 u
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ' P$ z0 ~6 g) y! }4 o( ?
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    # U3 N5 x% {6 ]; D) {" W. \
  10.                 // webclient.Headers.Add("Cookie", cookie);
    " B" Z6 l. d# L) y  G; ]
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    # o2 `. H; }* c! D
  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)");
    7 Z2 o' x7 L6 L0 X& ~
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");! I  W# o  x6 g1 O
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    - @* |8 v2 @2 s2 @
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    5 a, {, r1 {3 s; u0 g
  16.                 //如果服务器要验证用户名,密码
    5 r9 C. V! [6 s- ~: M1 N1 J! W6 t  Q0 \7 p
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 4 L6 {  O; w7 W0 z! O3 J
  18.                 //myWebClient.Credentials = mycred;
    " [7 _- q0 H- Y" R! h
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    9 m8 v; T/ G; B4 t/ l: K
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);' [+ ~8 X( [! c/ `2 |
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);. G6 e7 ]# x( X" z! o4 X
  22. , X( C( p7 n7 b$ P
  23.                 //获取网页字符编码描述信息 ) [' G" O0 W& Y$ p1 P- G
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);* d; w+ o4 i4 [# U/ o. k
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    # z& H! x# K0 t$ u- ~
  26.                 if (charSet == null || charSet == "")
    + u+ u* N1 |) ~
  27.                     charSet = webCharSet;% |; _& k- x# A
  28.                 if (charSet.Length > 0)" G0 K5 I' x. c6 c+ X1 Z) _$ a
  29.                 {6 `7 v; @4 p. ?, G4 E) {; A( u" i
  30.                     charSet = charSet.Replace(""", "");
    , D4 M1 a3 @. C7 T
  31.                 }4 t. y+ v9 F1 N$ J
  32.                 if (UseUTF8CharSet)) R. U; r/ e, \4 O
  33.                 {) h5 e7 L* m+ O. V2 l5 B; @2 R
  34.                     if (charSet == null || charSet.Length == 0)
    0 M% B) w6 j2 p* N3 z1 M; d: R* F
  35.                     {. d% s: p* f1 u; \5 m5 H/ W
  36.                         charSet = "utf-8";
    # P0 ^; c: ?% v2 y8 \$ s% R
  37.                     }
    + `- n  W3 Y- Z% }
  38.                 }
    6 k: e# F) N+ j
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)! M( W! j7 b8 x" |0 H% ^" w
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
      N* r' e+ N8 H) p
  41. + J: h9 d# F- w' b7 P/ \( Q/ t
  42.             }
    ' H. U, e  z; F+ l  H0 _7 E/ s
  43.             catch (Exception)' A) u4 S, X# g. |& p0 o/ `3 o' I) L
  44.             {
    ( p* J. r. _, z
  45.                 strWebData = "error";" i2 _$ h2 |: T
  46.             }
      B/ i( A  ^& Z

  47. 8 r6 v1 Z& l$ s5 ~9 N' [6 E8 b
  48.             return strWebData;
    % F! K% T: T8 O2 _9 \
  49.         }
复制代码

8 I( C0 t% s* l4 b+ F1 A" a7 V$ k
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-2 17:40 , Processed in 0.052914 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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