AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️AdsPower:安全不封号,高效自动化Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】
FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线
【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户E.PN 虚拟卡
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户FB资源,账单户,分享户,国内一手
FB企业户,TT老户,GG老户源头海外CL企业户源头PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心
FB虚拟卡⚡️消费越多返现越多【找量】BA独家Nutra单找量虚拟FB卡 ⚡️ 透明条件 广告位出租
8500万高质量住宅IP,助力各种需求   
查看: 9599|回复: 7

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

[复制链接]

36

主题

191

广告币

276

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1469

广告币

1812

积分

高级会员

Rank: 4

积分
1812

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    4 ~# j9 i5 N: g7 F
  2.         public static List<string> GetAllHref(string url)
    , p, ^: b5 E' T: N
  3.         {
    $ n+ o9 H8 ~. U4 B3 i
  4.             List<string> allHref = new List<string>();2 l5 _% K% U$ T0 }# U! F
  5.             try. k; r2 A8 w$ g- U( d$ O
  6.             {
    / J5 L5 q) ~5 ~. g
  7.                 string strhtml = soso.getHtml(url, "", true);
    # X' I- M; Y# s) P0 `6 z& I2 a
  8.                 if (strhtml != "error"). _7 o2 O, D8 B6 v  Z' \% a$ Q
  9.                 {
    * f" ^  N3 E/ E; f9 M- A
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");+ [( I) q# S8 ?; W+ T/ |
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ! y! C& G" ]( H8 V  @
  12.                     foreach (Match m in mc)
    ( X3 a3 c! z  w
  13.                     {) v  K- W9 d3 W# ]5 A6 s
  14.                         Uri uri = new Uri(url);' E. F# [; g. X/ i: s
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    0 n2 h- F' `) d  |" Y
  16.                         string fullUrl = "";
    ; S9 h+ @3 b% ]+ J* L) Z1 v
  17.                         if (m.Groups["url"].Value.StartsWith("http"))9 ^) w* ~8 [1 n6 J* T" n
  18.                         {
    5 K* d% _. I4 c; n) g
  19.                             fullUrl = m.Groups["url"].Value;& h7 a% {7 W+ _/ {; W- r) \, P
  20.                         }5 ~8 J  A6 a. s' m! ]
  21.                         else
    ! g% U$ g- l6 T/ \
  22.                         {
    9 q/ N5 O2 Z* J; m: V8 N
  23.                             fullUrl = thisUri.ToString();
    ) }5 m& j2 P: l1 ~1 E7 T# x; p
  24.                         }
    8 m: [4 n3 g( U% f2 [. ?7 p! r" U
  25.                         allHref.Add(fullUrl);: b: x9 t0 U9 @8 n3 f6 }- W
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);" C6 ]6 R& b# B8 ~$ F/ B# X: Y
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);1 D- J8 x- l* o$ G& b) m
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ) C( X  J. S5 l6 u1 X' \
  29.                         //Console.WriteLine("…………………………………………");
    * G4 J# j! t; j
  30.                     }
    5 `! U8 D$ [1 N" S$ ^- J  D
  31.                 }7 ]) l9 B0 n2 E( ~
  32.             }
    1 f0 x' c  a8 ?8 i7 Z
  33.             catch (Exception ex)
    0 L3 x% g) B0 N- Z  o2 `
  34.             { }. ]( f$ I- {  {7 Q) Q; S! b; {
  35.             return allHref;
    9 a+ j2 w! X/ i- A+ i
  36.         }7 d/ Y2 W2 [  U* s+ h
  37.         #endregion
复制代码
& k: x* K; ^: u; \& j! o
: u' m4 |5 Q( B# T5 n) Y' j

  1. 9 o. ^- P1 Q. q* x# i

  2. 0 U& m1 U( T# w4 b

  3. $ U! i/ Q+ i# u' @$ z$ P! B
  4. #region 数据去重
    / b, W- X) k0 F; [9 M, V' w2 f
  5.         /// <summary>
    8 _; F+ F7 a- G
  6.         /// List<string>去重
    1 N( L( k" K' }9 t4 o0 P1 X4 N1 o- D
  7.         /// </summary>& ^' {* C  C+ A
  8.         /// <param name="list"></param>
    % g: k* |" r  X3 o+ {7 C
  9.         /// <returns></returns>
    $ L0 g" @/ Y- A+ V
  10.         public static List<string> getUnqueList(List<string> list)4 U1 x, u! q7 i, o& b
  11.         {
      ?. y# ]7 O$ O- e! ~
  12.             List<string> list1 = new List<string>();, [* Q* D3 ?' j8 {. R+ j- H
  13.             Hashtable hash = new Hashtable();
    . K; L; J3 i, l2 L. I3 T
  14.             foreach (string s in list)
    ( R$ ?2 s# i7 |' U1 s# x
  15.             {
    0 m  P) R  C6 h% ~8 Y1 Z
  16.                 if (!hash.ContainsKey(s))
    0 c6 m  W: b+ b( |' u( B( ]/ n
  17.                 {
    0 X" \8 V: S( D7 o6 n* H, ~
  18.                     hash.Add(s, s);
    + W2 V# Y- G8 N/ C0 R3 N9 `
  19.                     list1.Add(s);
    $ d* F( Y3 j8 H1 G1 H8 i8 C% N
  20.                 }5 @- r: h/ V2 ?; b( S
  21.             }
    5 y* w& G- e  w/ q
  22.             hash.Clear();
    7 u$ t+ c5 t. O( ^8 l
  23.             hash = null;
    9 V. M# i# t9 S$ g6 I* v9 |; w6 G
  24.             return list1;" P. A5 r' m2 o: K  X& J
  25.         }; t9 B; r9 i& J; B, p( r
  26.         #endregion
复制代码
4 l/ S/ T7 g4 ]

3 c9 i& D5 ~/ a& b' C! t

点评

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

使用道具 举报

36

主题

191

广告币

276

积分

初级会员

Rank: 2

积分
276
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
! ]0 E, d% A/ O
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1469

广告币

1812

积分

高级会员

Rank: 4

积分
1812

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:205 O& I7 q. F6 H
十分感谢!!!非常感谢!!
/ V0 X4 n- x( b
缺少一个gethtml,用下面这个:
0 D+ L+ P# q- c& [! J3 F
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    - [' g- v3 U9 F: E
  2.         {1 T  g! V; K' u0 @3 p: `
  3.             string strWebData = "error";
    2 p0 w5 Y/ a3 E' f; A6 C
  4.             try, g$ v" a( J- k7 G8 [0 q' [
  5.             {/ U, n) g1 [  c1 T& I  ]$ Q3 ]  ]
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    0 U' `8 i$ m3 V
  7.                 // 需要注意的:
    ! K# R& B- G! N9 b9 n
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    : {. |- s8 C6 i6 b9 \0 \, j5 a
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    3 f7 |1 r4 t9 R$ F5 k
  10.                 // webclient.Headers.Add("Cookie", cookie); & I* G( X- d' Q: L' W
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    . ?$ o5 F; |1 r, q( S; l9 x
  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)");5 G2 z: c# |$ M. y8 K: m& l0 P+ ~
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    , B* T# `! w% x; I) l$ [2 T
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    . ?1 K5 m9 b5 i" ^, K; t/ e
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ' Z/ {9 s2 }# Z& x; P( j3 i
  16.                 //如果服务器要验证用户名,密码 ; ~; B0 {/ ^: s0 |5 W
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    $ `' e0 X& a6 p5 A+ o1 M
  18.                 //myWebClient.Credentials = mycred; % }6 [% {+ m. L4 S0 t7 d
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 9 I& i1 X' @& Q2 }" b
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);' y% a% `5 L" D' e( c5 i1 i
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);$ |9 o' n$ x1 Q0 {

  22. . ~* v/ L0 U7 a# ~
  23.                 //获取网页字符编码描述信息
    3 _( s, J# n7 a# u
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);% c' e8 Z* ?6 t+ K7 {: w
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    . @8 A) Q& ^! F+ g# M: X
  26.                 if (charSet == null || charSet == "")6 {4 i( `, }) @1 e
  27.                     charSet = webCharSet;
    * M0 ?! p9 g3 L8 S8 _! G$ N
  28.                 if (charSet.Length > 0)) \8 y3 o- r# ^
  29.                 {
    % R3 }9 k) v3 W& T3 m- @/ u
  30.                     charSet = charSet.Replace(""", "");
    3 i0 t1 W) T+ ~+ D
  31.                 }& n9 O4 Y/ S8 R! e1 y# Z
  32.                 if (UseUTF8CharSet)- Z! T8 Z  |, j
  33.                 {" g! o' j/ i2 H5 n/ l/ {0 ^- m
  34.                     if (charSet == null || charSet.Length == 0)
    ( d* A8 j; o) V0 A  Y9 h' n% ?; _
  35.                     {8 s/ d/ {) P9 f( O, m  x. t
  36.                         charSet = "utf-8";3 t% u- Y) N) h, |( r5 i; ]
  37.                     }3 H9 k/ N& V) C6 C) p0 K
  38.                 }
    ; F% Z: ^/ U1 }3 p' ]) n. k% c6 b( X
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    : G" r% F) r1 L2 m& [# L5 p
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);$ J* X: J) F0 p: Z0 P6 I
  41. ' @  k  C2 U. x" J
  42.             }  I. d; ?0 y0 ~1 j8 Z3 a
  43.             catch (Exception)
    : A4 @! K" a4 p7 h4 P- D
  44.             {/ \# x; V5 k( Q$ c
  45.                 strWebData = "error";
      M4 K$ l# M& L8 [& l' [) H
  46.             }3 T6 }- J* I' m& q% r
  47. ( l9 e) h; e% i" I6 Q  S
  48.             return strWebData;; B) M, J1 H6 g8 f$ D& L
  49.         }
复制代码
7 f8 n5 Z8 c) o% E

$ O) N% @) {. o" l
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 10:02 , Processed in 0.060879 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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