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%,国内持牌机构  
查看: 9748|回复: 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 抓取全站链接
    6 \7 `: p- b1 Z% m$ I
  2.         public static List<string> GetAllHref(string url)
    1 \8 p! f! y+ [
  3.         {  \7 X. Y' R$ Y0 b
  4.             List<string> allHref = new List<string>();
    " B# x* X, g7 s  [
  5.             try
    1 T0 g  N3 R5 b+ B: M. b8 X
  6.             {! U; c4 D( v: o) I* k
  7.                 string strhtml = soso.getHtml(url, "", true);9 W# `& E4 a6 T/ a
  8.                 if (strhtml != "error")
    " O/ Q- Z7 z0 n
  9.                 {/ C! d  Q0 e2 y
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");0 p5 a) n$ l9 Q
  11.                     MatchCollection mc = reg.Matches(strhtml);
    5 O1 ?7 n' j# W$ T) w- L
  12.                     foreach (Match m in mc)
    , F5 E/ f2 y* \' E. U8 @
  13.                     {. X+ W" K+ g# r7 _4 ?! q
  14.                         Uri uri = new Uri(url);
    % {$ U( S' _* e, t( k  a& R
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);& Y, k6 S& c3 D; M' _3 o
  16.                         string fullUrl = "";- _0 b& I# |& W; c
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    0 e( [+ y1 D. X- ]6 \, W; `% L
  18.                         {
    ; A7 ~$ o2 R* q& p3 o
  19.                             fullUrl = m.Groups["url"].Value;1 C% s# k% n; ^) F5 _7 e
  20.                         }
    * O* f# V8 l( ?1 |1 Q9 b
  21.                         else" Q, O, c  y0 G1 V/ v' |3 p& H
  22.                         {
      o5 e* x  U  L) Y0 Q
  23.                             fullUrl = thisUri.ToString();) [  R# d, w1 `) Q! B
  24.                         }
    ' e( E" Y# ^: n9 y, @' {( k3 U/ n
  25.                         allHref.Add(fullUrl);
    + z* W1 L% J# B: f% h" z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    / ~8 r6 s( l3 `, S
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    . U+ |. i$ p, m6 s8 z
  28.                         //Console.WriteLine("补全链接:" + fullUrl);# q  m! r& J: c; ^/ u$ j2 v
  29.                         //Console.WriteLine("…………………………………………");
    % K% q6 O, A3 C: I$ ?, f
  30.                     }4 t" i9 U' {8 `
  31.                 }
    + ?# V  p9 @8 y  `8 g/ K3 i5 x
  32.             }
    6 ~+ d$ M" z3 Z8 G+ _* V
  33.             catch (Exception ex)3 m  Q9 _/ y9 X/ G0 ^
  34.             { }/ y9 n& b) K  A$ e! K6 X
  35.             return allHref;
    6 T8 d5 r. z! i; z: f
  36.         }
    , G4 }' D$ I8 [+ v9 U4 o5 n
  37.         #endregion
复制代码

& ?/ b0 m- z, C8 ~) a# o2 J7 B7 v% H/ w. ~( J/ @6 P. d

  1. / |" A; ~9 q4 W8 p# Z
  2. - _* L; v) r, F
  3. ; |, i/ I* \) |8 O) j" S7 Y, p
  4. #region 数据去重) m; r( G- w. E2 m3 X8 f4 \" `
  5.         /// <summary>
    ' V: v! b( R7 i6 ?9 v: Y/ P0 w
  6.         /// List<string>去重
    $ F9 d0 z9 \) y9 j8 _; K' ^/ G
  7.         /// </summary>9 X+ ^9 J4 `$ d) T% \" A) f
  8.         /// <param name="list"></param>
    # K- G3 S* i% [- j
  9.         /// <returns></returns>9 y& a' K" O) V4 K
  10.         public static List<string> getUnqueList(List<string> list)
    ; T3 E. O- e5 I' r& j1 U8 t/ s
  11.         {" [$ y( a  m" C- ?! Q7 J$ l2 G1 T
  12.             List<string> list1 = new List<string>();
      P8 _5 ]) G# P1 X# P
  13.             Hashtable hash = new Hashtable();" V( M' X6 |; ?0 I9 R" d
  14.             foreach (string s in list)! V5 `  s$ W% i4 f
  15.             {
    ; ^7 i# z) H8 h( [3 O5 b6 _* I3 j
  16.                 if (!hash.ContainsKey(s))
    # f5 R, V% ^/ W- g- ]; R) d8 U
  17.                 {
    1 q( }, x2 N1 z1 m( u4 p. n
  18.                     hash.Add(s, s);, U: ^/ ~" k6 E  v
  19.                     list1.Add(s);9 k8 Y5 q( i0 F& T
  20.                 }
    ! t5 i+ M! k# ^" ]
  21.             }
    . S, b0 r) s  B7 J8 J
  22.             hash.Clear();
    $ x. n- c0 J* p. j- G
  23.             hash = null;
    + J0 f' l% W4 u) l' l
  24.             return list1;
    & T6 Y' R7 b2 ]
  25.         }
    . D/ E' _1 W/ x  P3 {5 H
  26.         #endregion
复制代码

6 K. y" n2 V6 W1 w6 g: ~8 _. c
, `' X1 {3 b& I6 v

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
7 Q& o2 P7 L, P
十分感谢!!!非常感谢!!

点评

缺少一个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
: u! S, Z0 B2 x十分感谢!!!非常感谢!!
+ E( N& |0 n1 O! @
缺少一个gethtml,用下面这个:
  I, u0 m0 m# o0 }  r6 y3 c5 p
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    7 e# [" B; t% M! X- ~
  2.         {
    ; S+ _& h6 F4 K) U
  3.             string strWebData = "error";- _' M: p5 u# S( `( d9 \/ `8 n0 A
  4.             try0 \# K8 l" U' u! B, Z( q
  5.             {
    $ L: W3 X" z  q( c. B: M2 w
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    5 t+ M6 g* _7 `
  7.                 // 需要注意的:
    ( {+ \3 K  p, I0 l
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 3 c0 ?: I" l' }( A* H- p  A
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    0 M1 _% t6 S. ^% W) I
  10.                 // webclient.Headers.Add("Cookie", cookie);
    0 o; c" g  i" p) [1 c$ S6 F8 _
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    . o# S( A/ @9 |
  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)");
    / H+ t/ G; ~& f2 W& b2 @
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");# ~+ X: X  C) I; b4 C4 w5 y
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    / U4 ^9 b9 u2 J. @6 q# r+ E
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    2 J) M) @) y5 K/ R: v6 m
  16.                 //如果服务器要验证用户名,密码
    1 [6 _' Q& H3 {' z# W
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);   _  s. ^, G" w( v
  18.                 //myWebClient.Credentials = mycred;
    . X% C. R* k* D1 v+ A
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) : V, f% ~3 i& ^* Z2 B, p
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ( z- n5 E7 Q, p0 e+ M# @* r
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);# \4 O0 S* S4 Q$ w# Z: n3 `' T% v

  22. + C( B! Y8 m7 I( b4 @5 V6 V
  23.                 //获取网页字符编码描述信息 # ?( Y* f: d4 X7 O
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    ! I, Y: v% f) \- S1 e2 P' e5 B
  25.                 string webCharSet = charSetMatch.Groups[2].Value;& h5 \; o- y0 P8 ^1 v
  26.                 if (charSet == null || charSet == "")
    ; C8 k; p5 }" e! q
  27.                     charSet = webCharSet;
    * s9 U6 v. `) j2 ^
  28.                 if (charSet.Length > 0)7 q" V7 e* V5 G2 `
  29.                 {
    7 l9 e$ |. N' H# G( r
  30.                     charSet = charSet.Replace(""", "");
    4 @* ~0 [  S' w3 h
  31.                 }
    ! I% @! m; M# O8 r! F1 m
  32.                 if (UseUTF8CharSet)- ]3 }5 o& M6 j2 f+ k% ~
  33.                 {, X0 W  S6 C! q: B( _
  34.                     if (charSet == null || charSet.Length == 0)& l3 o) [9 c0 h0 u! L1 u- A
  35.                     {
    $ p% P2 P) B0 [* [7 w
  36.                         charSet = "utf-8";
    7 T4 h% v; u+ _1 _+ ~4 }. U% d
  37.                     }
    & \/ n0 y: L9 ^6 A  K: Y  T
  38.                 }' E" z2 P" Y$ G( d
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)( t1 X) s& G( g4 J0 Q: R
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    6 W/ z1 }# r5 B( I  f
  41. 3 S8 h6 C1 E: U/ T) y5 `
  42.             }
    % `& A/ E& A6 s- p& e! g
  43.             catch (Exception)
    + L: h6 l" e9 z; U1 d# x
  44.             {
    : ^" j  E1 Q3 H5 l( u3 S! H6 u
  45.                 strWebData = "error";) V" Y8 u9 `7 Z8 L
  46.             }: _$ i3 j7 c2 ~

  47. , V: X6 j4 o: s3 N' d+ ?
  48.             return strWebData;
    4 ]3 L: E3 F" G
  49.         }
复制代码
' R, E( W/ a4 @- [8 }

- c' P0 b4 z# A3 M
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-14 15:49 , Processed in 0.051785 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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