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%,国内持牌机构  
查看: 9765|回复: 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 抓取全站链接
    : U0 e* N9 S8 F$ q& E) D
  2.         public static List<string> GetAllHref(string url)! ~, ^% S, {4 U
  3.         {
    2 s0 U8 G' ^+ {6 d5 E
  4.             List<string> allHref = new List<string>();
    : o5 i* ^4 ?9 O, M$ {
  5.             try
    % I8 W  B* Y6 |
  6.             {
    ' v8 ^, h: S* r. d  O
  7.                 string strhtml = soso.getHtml(url, "", true);3 b- Q% t% {$ b/ r6 c
  8.                 if (strhtml != "error")" K2 f+ ~; g7 V- `( p
  9.                 {) `7 V  F- }$ |  i
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");( z2 V) u+ r9 C1 W: v
  11.                     MatchCollection mc = reg.Matches(strhtml);! D0 E$ y- U( |6 z
  12.                     foreach (Match m in mc)+ z6 _7 k/ a9 z3 V3 ?8 n
  13.                     {/ U. t) H& K$ p6 W' V. z
  14.                         Uri uri = new Uri(url);
    : p2 g# d" }! }* J$ l9 Q
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    # A* |+ R( ^# y8 z/ l9 m% B* s
  16.                         string fullUrl = "";+ b# z& D  `2 l1 G4 v
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    9 R- {. X2 W* Q/ @( f& q
  18.                         {
    % P* X$ R# {3 i" [& V1 s& h- F
  19.                             fullUrl = m.Groups["url"].Value;. l5 L" L, B$ h6 y0 |
  20.                         }- G$ y# a5 r- U
  21.                         else( n% I+ r& I) ]! x, U& u
  22.                         {
    4 J# A3 L/ D- U, F
  23.                             fullUrl = thisUri.ToString();, i$ |4 @* [- U2 M. B/ Y, N
  24.                         }
    , x/ \3 X. K/ E6 O$ p& L' P) L
  25.                         allHref.Add(fullUrl);" @7 V2 A+ h- l4 T
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);' [6 Q8 N- q9 Y. j
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);* }$ W0 _! H# z; V% A$ d6 j/ t
  28.                         //Console.WriteLine("补全链接:" + fullUrl);; l0 `: U! ]0 j- ?* T
  29.                         //Console.WriteLine("…………………………………………");, b* l) @- p/ u; j" v
  30.                     }8 j5 j, a: T/ E" ?# ^, I! Q. @+ V" _5 Z
  31.                 }
    % H; u" R  S. z9 w2 ~: \1 [
  32.             }) {3 t- M8 W" U+ T1 q9 F
  33.             catch (Exception ex)
    1 Z9 d* c! D7 h$ U$ r! L$ {' x
  34.             { }( f$ ^2 [/ v( c
  35.             return allHref;, k; I3 }2 d" h% }, o2 {0 r7 D& C1 u
  36.         }
    & ?. l; G, p. `1 m
  37.         #endregion
复制代码

* Z( i, b- p0 B$ ^  ~
6 M- k* }( d  O# R5 \7 G+ d/ ~- R& k. }

  1. - t6 d" i0 [/ A; _
  2. 3 d, [+ }2 ?( v- J7 ^5 s

  3. $ V3 d7 t, ]; k
  4. #region 数据去重  t0 O$ p# H1 x7 a0 h& C
  5.         /// <summary>
    ! W$ r! b9 x9 ]$ ]( N( }" U
  6.         /// List<string>去重5 O* d/ ^  G+ ]* M
  7.         /// </summary># L/ R, z) R. x( K/ \0 [6 a, U
  8.         /// <param name="list"></param>
    3 o% A9 Q" ]+ R8 _* a
  9.         /// <returns></returns>
    + @% K, V* B: d) r" f2 ~! O5 g
  10.         public static List<string> getUnqueList(List<string> list)
    5 b6 t7 ?/ Y' O9 m" X- K
  11.         {
      R( y1 x( a8 s, u
  12.             List<string> list1 = new List<string>();5 {$ ?" ]6 ~6 B' r+ G1 b5 E8 i
  13.             Hashtable hash = new Hashtable();
      u( _2 X) |# b
  14.             foreach (string s in list), P6 G  m( e" h# M( l0 Q; N
  15.             {' k* e9 q  y' X. Z* w
  16.                 if (!hash.ContainsKey(s))
    , P" Y- V  s6 _0 D# k# q. [  ~  X
  17.                 {
    ; p  ~5 T: t# O% M' q" q0 f
  18.                     hash.Add(s, s);
    ' D: e" e  C2 R
  19.                     list1.Add(s);
    ) i: K8 y' q8 b( d
  20.                 }3 B6 b! ?% }2 V( _
  21.             }# ^- T5 a! w/ R# _4 D, t; Y# h& m* x
  22.             hash.Clear();
    - [2 b6 R4 M1 x  ~/ f' |
  23.             hash = null;6 V) s9 c: z+ x
  24.             return list1;
    * C. B7 ]' V( t3 G- D& C# o& _
  25.         }* s: c+ p; _4 h5 [% |% X1 t, n
  26.         #endregion
复制代码
$ W4 f6 a( ]8 n7 X* i7 ?
; a3 P( @0 C& p$ A  _: O  f! Y" C* k' B

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
. q2 w+ C4 c8 U+ W
十分感谢!!!非常感谢!!

点评

缺少一个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
8 h& ~" }7 i# ]; q& s十分感谢!!!非常感谢!!
9 |1 v( `* k6 @# m
缺少一个gethtml,用下面这个:
! m) U: H) p9 }) _1 w
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    2 A4 v$ o  ?9 m! b% X9 }
  2.         {! [2 D- K3 y1 l. Z  [3 ]0 z
  3.             string strWebData = "error";
    " O9 R9 y3 E" Z- t1 ]8 w$ l
  4.             try5 A+ h  Y' V) O. {' p
  5.             {
    7 c1 o0 g& s& a  K/ v
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    : h7 O! h; p- c/ [0 d
  7.                 // 需要注意的:
    7 f( k  \3 a* V6 ^& o
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ) P/ D) S8 U- j) U; A: L
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 7 r0 j: a9 N% A8 r6 v  _
  10.                 // webclient.Headers.Add("Cookie", cookie); ; N( q  d  R4 n) d3 Y, q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ; r* N: b( H! p7 l$ p, l( P6 H
  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 Q' F* R$ Z
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    9 W+ ?8 X, F" b5 o: q
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    1 c  M8 \. I1 }/ D! m( p
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;% Y- b5 V$ s9 v
  16.                 //如果服务器要验证用户名,密码
    & n+ l2 L* G. e
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ) W, q9 U3 H4 q# q
  18.                 //myWebClient.Credentials = mycred;
    2 O7 v9 O( H: [; \7 Z. }/ S
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    2 y: T9 V/ S3 V3 D
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);& `$ \7 k9 }2 X% Z5 Z! ?
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);6 j. P3 |1 l2 ^7 S; m
  22. 0 b7 q, u: L; g8 i
  23.                 //获取网页字符编码描述信息
    / f: }. {" r2 c; t, D6 g8 K
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);# ?& q: \. R4 [
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    " ^' W$ Y' \, Y7 ]0 m% C( y" s' {
  26.                 if (charSet == null || charSet == "")
    . J+ a% _# v  Y
  27.                     charSet = webCharSet;
    ; f1 g' {+ A# [
  28.                 if (charSet.Length > 0)
    " o: @7 N7 H4 H# E1 j8 m/ [) M
  29.                 {& Z5 F7 D1 n6 X! l
  30.                     charSet = charSet.Replace(""", "");
    ; h! z  w0 F4 `
  31.                 }
      V, w! h0 |/ i9 u
  32.                 if (UseUTF8CharSet)
    7 P8 w9 V$ j9 r3 n% o# R+ K
  33.                 {
    2 W; A/ x1 V! z+ H0 |3 A
  34.                     if (charSet == null || charSet.Length == 0): a& G+ d" L( U
  35.                     {* N" [* }; k; S9 v
  36.                         charSet = "utf-8";; z' `; y! A; f) T" Q" A/ X
  37.                     }9 a6 Q& l; k  O/ m: n
  38.                 }! f) ?4 O  H# c$ D) M
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    2 \4 `. {4 Z6 K, w& c2 j
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);! D# T. v. l* f! A

  41. 5 K% D& d2 K1 f8 N. j. N$ z/ M
  42.             }8 }2 b: q$ ~4 W5 v0 t; U0 x0 r
  43.             catch (Exception)
    9 |! c" t& E$ `
  44.             {
    7 ^* h5 I# J) ?0 t! ?
  45.                 strWebData = "error";
    2 R( \; i9 U. r4 o7 h) F, z' n
  46.             }
    ) y4 n. u. q6 _% }3 w9 C: K' d
  47. & j; }; h" t: c; _3 A
  48.             return strWebData;2 v7 q& b8 g2 ~9 F7 _  C
  49.         }
复制代码

) P, U2 o( h6 r# h4 V6 N  ^7 T- w5 F
3 b+ ^6 B; k+ _7 O0 }' o
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 23:42 , Processed in 0.054661 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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