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企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9745|回复: 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 抓取全站链接4 ?, Y' K5 c2 @5 u
  2.         public static List<string> GetAllHref(string url)
    9 H# f3 }, O! d9 v( a" r
  3.         {5 Q1 M0 @4 ]2 F  q0 j+ _7 _
  4.             List<string> allHref = new List<string>();
    0 j  Z4 e+ q9 I& z: f$ z$ O
  5.             try
    ! N% D) [( B3 l$ Y: K2 R( S
  6.             {
    ( N* E, y% X- ]" b, L, ~1 O
  7.                 string strhtml = soso.getHtml(url, "", true);% c4 r5 }8 J) R6 \4 ]& [' @
  8.                 if (strhtml != "error")% p8 i6 @1 E7 Z6 G* t
  9.                 {. X# y# v/ G2 R7 Q0 b
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");- m- G% m# a( r
  11.                     MatchCollection mc = reg.Matches(strhtml);9 y# l; q9 X( I7 |7 q
  12.                     foreach (Match m in mc)
    , W3 U" c% w% L( E; e
  13.                     {) N  k! f+ l) u$ S! L/ Q
  14.                         Uri uri = new Uri(url);
      K6 v! j, ]6 v- W* p6 ^) f
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);. i8 y! l. H6 I- D' ^, C, |4 z( r% d
  16.                         string fullUrl = "";3 k  N) x! A) R% c
  17.                         if (m.Groups["url"].Value.StartsWith("http"))  U' X1 {: O- b+ H- [" Y1 `
  18.                         {3 p1 P# W9 R4 C5 k3 T, o: T; R
  19.                             fullUrl = m.Groups["url"].Value;
    : J- S$ S+ h$ D  o' w: r; u+ h
  20.                         }
    9 s6 E! X# O# D, G
  21.                         else
    " C2 X) m" @4 b( i1 d, e
  22.                         {
    ) u" R2 I2 Q3 ^
  23.                             fullUrl = thisUri.ToString();
    ' g, ?: S$ G) n) h
  24.                         }
    ) a0 z( O& x8 r8 R7 A. @1 }
  25.                         allHref.Add(fullUrl);
    + y9 U8 r+ T% B' T7 i) \1 u
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    7 j8 U. x7 G* g3 i4 b; [7 _
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);+ p- \( s( o4 L# ?: D# u
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    8 f/ p( s! }2 q6 e
  29.                         //Console.WriteLine("…………………………………………");
    * x' v# m& _4 S6 ]1 z4 \
  30.                     }
    : `# l6 W/ V6 f
  31.                 }
    # T" T2 \+ e6 G2 V
  32.             }' E. @3 f; f$ ^. [7 i, c
  33.             catch (Exception ex)7 `% }8 x8 u% m. Y% |
  34.             { }- ]% M& I) I. V$ K% k: c7 ^" Y: Y
  35.             return allHref;5 a, D# t( j8 F% H1 k* N' V# X2 X
  36.         }" u* m  Y$ u' N
  37.         #endregion
复制代码
% h$ k( r" W& ?& x1 r" d7 w
$ {2 \9 `& G1 T4 x- A
  1.   z7 H1 Z. V: d0 ~

  2. # {, H: u5 w# c- `# ^+ @9 H

  3. ' X; P5 T6 c) P  I$ J# y! \
  4. #region 数据去重
    4 |1 ~7 _- P: N1 w6 L* n
  5.         /// <summary>9 c' Z- O* m, w. ?2 H1 c
  6.         /// List<string>去重
    9 A1 Y0 w9 a$ w! m% X; |2 R
  7.         /// </summary>. T, p( r' U7 A, i
  8.         /// <param name="list"></param>0 ]  V& {. q0 S8 N
  9.         /// <returns></returns>. ~* B; m7 h0 ^8 U' [( R
  10.         public static List<string> getUnqueList(List<string> list)
    : @' {0 f& j9 g& {
  11.         {9 P% p! t" @' M7 u- V9 r
  12.             List<string> list1 = new List<string>();! z3 L+ g+ P+ H' O
  13.             Hashtable hash = new Hashtable();
    & v( D% Y! s5 c+ u' h9 c
  14.             foreach (string s in list)- }  W. N6 \' ~3 H/ m- Q$ R
  15.             {' ^& v2 [* p+ L5 [
  16.                 if (!hash.ContainsKey(s))
      P2 t5 p% V% [) `1 O0 H$ k
  17.                 {7 T" g' g- h# a  I, {
  18.                     hash.Add(s, s);
    1 _( Z6 W& L- Y9 s& ?  Z- s% k
  19.                     list1.Add(s);# @: A  G- [/ j) L
  20.                 }
    3 _8 c+ z  j$ v& Y/ p! o: g7 L
  21.             }
    ( d4 Z( s  j# ]. H) y1 [3 V
  22.             hash.Clear();
    ) x9 B0 |7 K8 `
  23.             hash = null;1 K9 V$ e4 h6 O/ }$ U
  24.             return list1;
    9 J) i$ N7 r" b; r% I& o
  25.         }
    , o2 U5 }4 X6 c: p0 I0 W
  26.         #endregion
复制代码

! X4 V# V1 N  o. _) h" h  ~1 M8 J% J

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

0 f6 ]2 q7 o. m6 u2 v十分感谢!!!非常感谢!!

点评

缺少一个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
" ^/ C; [$ l1 q1 ?3 A十分感谢!!!非常感谢!!
( A' T! X( ?3 L* ^6 H8 B
缺少一个gethtml,用下面这个:
$ }0 x0 p- k; X5 X, d
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 $ T! t9 M5 E- K+ w8 l) o3 D5 {/ F
  2.         {
    ( X/ ]/ K# C0 Y1 S, E% T
  3.             string strWebData = "error";- X1 O; n1 m& L$ B
  4.             try8 m5 E" l3 A$ ?, Y+ V( t  a  K
  5.             {' \, e9 c7 |" f( _! z+ n7 Q6 j
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 4 {$ G9 i) ^5 T. `- h1 U$ q
  7.                 // 需要注意的: " z4 r5 |1 b! {" ?6 `
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 # s& ?( ^0 S4 h' P
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    & y/ |( I' z" j3 v1 i/ d
  10.                 // webclient.Headers.Add("Cookie", cookie); 6 g; m0 H* l5 n3 l
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    / R" t+ \+ n& 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)");" z" X' n" ^6 V+ \" B
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    4 T/ k6 N6 N' h( ?% b
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    . z% I7 t" O5 V4 `8 `
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ( w+ y3 J2 j. u; h1 w
  16.                 //如果服务器要验证用户名,密码
    ( b' K% n# U  D' ~% o
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ( c- n5 s4 K2 g& C6 t9 B" Q- H
  18.                 //myWebClient.Credentials = mycred;
    % {, i5 M, A9 [1 y
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) $ C8 G% j( D# L$ W( M
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    % E$ r4 j9 }# j* `/ f- n
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    / @+ `, S) y9 T$ V/ ^, X5 z

  22. 2 i: U6 |- u# u4 K) s, [/ F
  23.                 //获取网页字符编码描述信息
    . h1 j$ ^8 j( p, F
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);" a" i# m5 d/ @, \1 [+ ?9 i; R" @1 M
  25.                 string webCharSet = charSetMatch.Groups[2].Value;) G" T3 h7 V$ b) S
  26.                 if (charSet == null || charSet == "")! W5 u6 F% U, P. @
  27.                     charSet = webCharSet;* G8 B  U, u" |; K
  28.                 if (charSet.Length > 0)
    3 y# H3 D4 f% o2 k1 H# w" N
  29.                 {0 K( I4 x1 \" o
  30.                     charSet = charSet.Replace(""", "");
    ) E' b$ Q, `- `* J6 F* s% H
  31.                 }2 Q5 s: Y, p( U2 S0 j
  32.                 if (UseUTF8CharSet)
    * w4 h/ M, b! O. d+ W/ p
  33.                 {
    5 h) i$ v7 _: [* s0 q( ]0 M8 x# q
  34.                     if (charSet == null || charSet.Length == 0)
    % A& D3 w# `0 j! o0 }
  35.                     {
    * m/ Y1 n9 R8 ], l8 }
  36.                         charSet = "utf-8";4 x$ D& e% }2 N1 p+ M
  37.                     }
      U: `8 d6 c6 p
  38.                 }* e5 M' H$ e! T( Q
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    1 M# U$ p! u6 |5 l5 m5 w
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);% L( j/ n! U" Y4 n3 N& j% d7 k

  41. 5 O/ M9 u5 Q' R  A
  42.             }
    : W" A2 u3 J1 s4 m: x& w; ^
  43.             catch (Exception)
    , _; B. K: G9 K1 ^2 z3 C
  44.             {
    ( Q8 a* O7 i/ O. G2 Z2 r
  45.                 strWebData = "error";& q9 a" l$ u9 o( t" d  X9 N' E
  46.             }
    ( x4 k9 z+ \" T' g* H& x" M
  47. 5 v5 M$ Y( A! o# \7 k+ A
  48.             return strWebData;
    . }$ ^& V6 k$ M8 I2 i
  49.         }
复制代码

; T: Q! ?6 C1 N9 O* t/ }( r( C+ P- Z6 o; I! h: D, n$ ^1 x) ?
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-13 21:47 , Processed in 0.051683 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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