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户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9957|回复: 7

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

[复制链接]

36

主题

209

广告币

293

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接- l% I- b2 @5 }, l# l
  2.         public static List<string> GetAllHref(string url)
    # E. _& @3 o$ C$ C3 M( Y$ A
  3.         {+ `% p* R& l8 T: f
  4.             List<string> allHref = new List<string>();
    + U- \- ?6 p: t
  5.             try
    + v4 Z' ]  Q* ~' G$ T
  6.             {8 H! r1 h, b5 s7 z
  7.                 string strhtml = soso.getHtml(url, "", true);! a  F  `0 s% R. y! o- w
  8.                 if (strhtml != "error")
    ) N/ e' u: z9 B% d) s: p4 u
  9.                 {
    ; {) w$ ~3 n: ]0 H% [8 ]; \
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    + `+ Z, d8 s$ ?! ?+ `
  11.                     MatchCollection mc = reg.Matches(strhtml);( }, q" i2 ?' [6 B8 X
  12.                     foreach (Match m in mc)% n: U/ G9 {# U- q
  13.                     {' a2 T( a2 G. t. K0 s0 f1 m
  14.                         Uri uri = new Uri(url);
    + j0 d* G0 w* O& ^" P8 t, g
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    + R0 \, n& j/ ?3 E7 Q9 v  g
  16.                         string fullUrl = "";
    % s8 E% }2 B- d0 x( f+ g3 L
  17.                         if (m.Groups["url"].Value.StartsWith("http"))" l6 k) a5 \( `, k2 p# T/ F
  18.                         {6 z$ A  l+ I4 @! T. ]0 C, b
  19.                             fullUrl = m.Groups["url"].Value;
    ( u; ~6 n; j8 j9 t" E7 f5 u3 U
  20.                         }! C& h7 {9 B- b+ ?# r: G" F: L
  21.                         else; q+ e7 J! ?0 Z, J$ y
  22.                         {
    / H: F' R2 [- j+ z$ H& P& B( y
  23.                             fullUrl = thisUri.ToString();
    + ^% b% U( H$ V4 h9 {$ L  _
  24.                         }
    ; @# q( {. Q2 g- I  _- _
  25.                         allHref.Add(fullUrl);
    5 X* t8 B! F6 r! k
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);" U7 e- y/ A' ?( z7 p, D: z
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);1 t, c" X% ^; s2 A
  28.                         //Console.WriteLine("补全链接:" + fullUrl);2 M+ C2 A% K8 v7 z6 b" d& e
  29.                         //Console.WriteLine("…………………………………………");3 q0 B" ~% J# A
  30.                     }
    . S3 |) R6 b" W5 A' E3 r  L% v
  31.                 }8 s; Q" i$ r' T: w2 Z( p! T
  32.             }6 `" ~. g# u7 y: _
  33.             catch (Exception ex)) i6 T" F7 l& d! V
  34.             { }, a8 c1 l, q# g& ?
  35.             return allHref;
    . b: x; g& @( d
  36.         }
    & F0 u# V- b& d6 B
  37.         #endregion
复制代码
+ Q! u2 _6 j/ [
. C  K) Y- e3 ~8 V" ~
  1. 9 d& g6 n3 h  y; m8 `8 n. P; ^( C

  2. ! r) [* E' F4 b5 W5 K& i. L$ a
  3. & I8 T2 ]2 @3 ]( [& u
  4. #region 数据去重
    # b/ A0 q" T0 w/ Y6 }0 q8 M- |* w- ?
  5.         /// <summary>/ P, _- ^. b7 U0 A: H
  6.         /// List<string>去重
    $ a# m$ c" M* ?: ]% b
  7.         /// </summary>
    " `5 `  [! |; E  S0 a* Q) i/ q
  8.         /// <param name="list"></param>
    $ O9 o, s8 h& s
  9.         /// <returns></returns>( x2 C7 s* G+ U# m! E0 B" U
  10.         public static List<string> getUnqueList(List<string> list)/ \4 T# `) |, t1 H, ]7 M
  11.         {
    * r8 M3 j8 V% _+ h. _/ F' a2 `1 y
  12.             List<string> list1 = new List<string>();
    $ C: o( {. N* a, o
  13.             Hashtable hash = new Hashtable();
    / h9 Y, e: U. _0 A! p/ R
  14.             foreach (string s in list)
    : u  |  i9 ~  E2 l9 l3 s
  15.             {) i& o8 m' Y: l$ @: d! y
  16.                 if (!hash.ContainsKey(s))
    " y' `% }$ k+ K5 e& `9 m$ q5 ]& P% Z6 F
  17.                 {
    $ z: h: {6 l- k5 ]! y: o
  18.                     hash.Add(s, s);, O1 |) T4 y9 @, t
  19.                     list1.Add(s);0 P0 c+ v2 J1 |% |3 R
  20.                 }) f6 r7 O1 Q8 C0 G. M: Z
  21.             }) [" G+ c# l; W( d# [" \4 U+ I
  22.             hash.Clear();
    3 v2 B- u, V7 l; V- X6 F
  23.             hash = null;; ~+ x+ ^3 f  `  ]2 T( A
  24.             return list1;! E8 @0 |" T. d( }
  25.         }
    % Y4 y9 D  N, Z( m
  26.         #endregion
复制代码
6 r2 O# e9 ~( [+ T$ h8 R* q
, x2 X" C! R7 ?+ w. W& R

点评

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

使用道具 举报

36

主题

209

广告币

293

积分

初级会员

Rank: 2

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

0 i" C/ Q3 _  V' G十分感谢!!!非常感谢!!

点评

缺少一个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
/ l. ^/ }$ w) v4 `十分感谢!!!非常感谢!!

$ G1 Q( j+ `9 p4 d5 l& a) z; W- {% ^  X缺少一个gethtml,用下面这个:
7 H: G" M: t. V- P0 W
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    : a  |" O" Q6 `7 H% [. Y- }9 t
  2.         {
    6 W2 U- ~- E/ O6 v$ S
  3.             string strWebData = "error";
    3 b  v3 Y' T7 Y
  4.             try6 ]! p4 H/ O$ h5 K
  5.             {
    7 w. ~& G) d5 T" c0 Y  |/ K
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient $ e' o. {2 A# q2 h" M* G4 X
  7.                 // 需要注意的:
    * u# r4 Q# V/ p% u* ]
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 # Q) i& V' M' w7 k! B2 j% t
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    8 e  J5 V7 N1 Y& ~
  10.                 // webclient.Headers.Add("Cookie", cookie);
    9 `+ H4 R3 V, O# V. T
  11.                 //这样可能需要一些重载方法。根据需要写就可以了: B0 e8 l  l! `( d# 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)");
    9 ~9 c/ q0 F1 a0 y: H( r' {4 d$ t
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    7 A2 j# u+ A- r) V( F( A) z
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    * F: y- H0 x5 `2 R
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    6 l* B  z' f" v( m0 A
  16.                 //如果服务器要验证用户名,密码 + }5 F' {& F% J: [2 L# O6 F
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    : B: K& A. l+ L. t" k! C  v
  18.                 //myWebClient.Credentials = mycred;
    4 i0 ^! e( T! O8 T& ^) ^
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    5 g' D- C$ t+ E9 U: y7 l7 N" ~
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    - G* b2 }! z9 w3 v" `0 E
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    1 t( R# B# ^3 h; X

  22. 6 G# _: t3 h6 I, s
  23.                 //获取网页字符编码描述信息
    ! O4 s0 J# ?% r
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);% ^1 o8 V% q* T& Y
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    * s+ Y$ Q" R. U% J  V9 A/ W
  26.                 if (charSet == null || charSet == "")( `& S+ R8 b& x& @2 Z
  27.                     charSet = webCharSet;
    ; e' m0 S  |& U
  28.                 if (charSet.Length > 0)
      G1 e* r% U" V2 l8 Z' d
  29.                 {
    / H  ]- Q$ _  i/ ^
  30.                     charSet = charSet.Replace(""", "");* x/ _' j$ E7 ]3 f
  31.                 }
    ) b& h0 Y8 z. f1 \" @" d
  32.                 if (UseUTF8CharSet)6 y( c/ N& V! W
  33.                 {
    4 m/ h/ a0 h! B( m  z5 }
  34.                     if (charSet == null || charSet.Length == 0)/ ~# {# ?; z% x8 l4 {
  35.                     {3 N3 @; Y- L4 {1 m
  36.                         charSet = "utf-8";$ E  w5 h2 E$ t4 {* h3 c/ Y7 s, b
  37.                     }: [; W  V) J6 u) ^! m
  38.                 }5 H" J$ B, a& ]
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    ' J1 L/ ~+ D1 g2 x0 p8 j! I
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    9 P$ P  Y8 z( {8 l1 q5 e& W% A
  41. $ }) v# P; j, h
  42.             }
    6 J& l5 {* h  B2 M
  43.             catch (Exception)( ?( E& G0 o4 j$ `6 B
  44.             {
    $ r4 e  }; h: R7 D- r2 ?5 [
  45.                 strWebData = "error";
      c4 v5 C9 b" Q( P; D% y
  46.             }3 O; Z8 [! c# Y* e

  47. ) Q) d* x: g' P4 [* S
  48.             return strWebData;- Q2 c* r/ N' ]. J
  49.         }
复制代码
2 F+ D" j$ J# o! ]5 K
" G2 F7 p% B  s. t0 M* R
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-14 21:06 , Processed in 0.063134 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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