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%,国内持牌机构  
查看: 9750|回复: 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 抓取全站链接9 w0 K+ W+ r* x$ q# z
  2.         public static List<string> GetAllHref(string url)
    * c1 B* @$ {1 e, _# x
  3.         {
    ( g1 n6 v( J4 e) }/ m0 B3 V
  4.             List<string> allHref = new List<string>();
    - Y$ Z* m; `% r7 l
  5.             try
    $ n: H% A6 E' W$ f$ @. u* C8 I
  6.             {! E& C) S/ r  ~( E
  7.                 string strhtml = soso.getHtml(url, "", true);  O- w) n9 m( o/ x, d) S5 Y
  8.                 if (strhtml != "error")9 O( T) L) w% s  \2 I. _
  9.                 {
    # [; M7 d3 s' w3 M: z9 H/ V9 W. q
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ( L& m* ^( n$ d2 I% l
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ) w: G+ v4 y: V3 p6 R
  12.                     foreach (Match m in mc)
    ( Y/ C/ L- c8 ]  a( z
  13.                     {0 b; Z. ^$ N- G8 z2 e0 b
  14.                         Uri uri = new Uri(url);
    4 Z. G( ^. I! R7 e
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);8 z& f  L4 L" k* d$ H
  16.                         string fullUrl = "";
    6 @" U7 h) H' C8 d$ [
  17.                         if (m.Groups["url"].Value.StartsWith("http"))& @2 O5 h5 t0 n' Z6 m0 K
  18.                         {5 _  A. J9 [+ p; M2 G: m4 x
  19.                             fullUrl = m.Groups["url"].Value;+ P0 \# X' v* h/ Q- U% {) h
  20.                         }% z& G1 j- l% N9 u& A
  21.                         else4 P" W! O, u3 D2 \
  22.                         {
    9 f) |' P+ X9 n( A
  23.                             fullUrl = thisUri.ToString();
    1 y5 B. |: s; k9 @
  24.                         }
    # j5 `, ]5 {6 ^
  25.                         allHref.Add(fullUrl);2 n' }; a* k: F, y8 d
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);6 |& p0 i  y% A) H$ c" L% t; M
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ; W% K. f( L6 K1 t
  28.                         //Console.WriteLine("补全链接:" + fullUrl);1 I- ?, q- I# ?
  29.                         //Console.WriteLine("…………………………………………");. M* p6 E9 |- c8 t2 C4 r/ J
  30.                     }
    & Y1 e* b: Z2 p6 {! x
  31.                 }( ?3 T$ d& _+ E7 n/ L9 f8 R- K1 F
  32.             }
    % Y2 w# v0 A' J2 M- X
  33.             catch (Exception ex)- U5 U5 i% ^5 s7 N( c
  34.             { }7 O9 i% @* m; Z$ C& _) j
  35.             return allHref;/ R1 G% R- W0 \! o; U
  36.         }, O) _: l' v' W5 b" E; i* l
  37.         #endregion
复制代码

5 Q5 V' w7 j! y" `8 y& w" `- q* p3 m5 T& R: x, {

  1. 4 W7 Y" H. ], r

  2. 5 ?8 x0 n8 k" t$ J" o! {. t7 f
  3. & f: v2 J: W5 l1 O/ z) }: Z
  4. #region 数据去重
    ; j" x/ @) V" Y5 U
  5.         /// <summary>! \7 s6 D# y. `9 A1 E5 x
  6.         /// List<string>去重
    ( d( r1 T3 n; Z7 |. E
  7.         /// </summary>. Z: G9 {% o  H9 i
  8.         /// <param name="list"></param>3 m4 n0 M# Q7 b. Y+ q: Q+ N/ c
  9.         /// <returns></returns>
    # Q8 k: G2 D2 E( k4 L% ^4 Z( e( G
  10.         public static List<string> getUnqueList(List<string> list)
    1 ]8 k) c- e  q3 C8 `' f% p  O) Y
  11.         {! l& ~* G7 b4 |3 N3 Z
  12.             List<string> list1 = new List<string>();
    4 P$ Y4 }1 _$ H: w4 Z: \
  13.             Hashtable hash = new Hashtable();
    9 U1 D. d& t* B2 u$ Q  w! F5 Z" I
  14.             foreach (string s in list)
    4 E7 z+ `/ f2 b8 z6 I/ e3 T
  15.             {
    # Z6 I- a8 _. J8 h' [
  16.                 if (!hash.ContainsKey(s)). L7 G; q2 d; J+ I, S/ O' R4 i
  17.                 {
    8 k7 L: X( b+ R. E' v
  18.                     hash.Add(s, s);
    % j; {9 H, t( n8 p0 K
  19.                     list1.Add(s);& t$ K* Z& g7 a; W7 I: \1 [1 p
  20.                 }
    " {: I- O* t: f  g
  21.             }& ~, N( n2 q; L+ A# R
  22.             hash.Clear();3 m7 M+ a/ R- V) l# r6 Q) v
  23.             hash = null;# I( N: s7 N- x' o6 \) u
  24.             return list1;9 y* k! h* [4 k) Q' H9 y% G
  25.         }
    + Y$ @, }3 t3 ~1 ^9 C) }  s
  26.         #endregion
复制代码

* \& `5 E, z: F/ P1 g8 y+ N
6 v/ w6 w, R2 [# A. ?  y9 F

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

" z/ d9 U& F+ G8 K0 J十分感谢!!!非常感谢!!

点评

缺少一个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+ t; B0 ]  G% ~6 @十分感谢!!!非常感谢!!
1 O; C, s& X; h: l) s  s
缺少一个gethtml,用下面这个:$ ~, i6 ^2 ~: \2 a% y, c6 B- B
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    4 V, |! ^) b3 F% e/ c
  2.         {
    - B4 n8 X2 _% U' v* c
  3.             string strWebData = "error";7 R; ^- P1 S( @! o+ j% e
  4.             try
    / |) S! ~. \0 F3 Q7 I# g- Y. H/ v5 h
  5.             {
    4 d/ z7 k0 c' l: N# v" }
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    " q( M% v: H  y
  7.                 // 需要注意的:
      L3 o7 r9 y4 O
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    ! s1 F, ?$ m+ S1 k% B
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    : }- F: ^- d: b; |2 |
  10.                 // webclient.Headers.Add("Cookie", cookie);
    0 }7 T6 S, ?* C4 m+ [3 T- r( c
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ' W% U  ?& @* V
  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)");
    8 j$ M0 M7 M8 g! D, P
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    4 r, p1 I1 v" R) Y
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 : G7 {' C- R2 h  P! ^1 `' J, Q+ \* S, X
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ) |; T" c  H# R8 t  F' q( D/ \
  16.                 //如果服务器要验证用户名,密码
    3 w0 v8 o7 u2 \; d
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    % o; O7 Q% \5 w8 {, H$ P% H
  18.                 //myWebClient.Credentials = mycred;
    / l- m" f2 f9 B* Q+ G8 ?
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) * w4 g2 S8 N! A
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    * c" L, {  t% z. G
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);8 @! b' m1 K& k. j
  22. ! K$ r9 g/ ~& }! G7 @
  23.                 //获取网页字符编码描述信息 ( S$ D# _" R& y; {
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);. n" l  e6 p' S# R; f8 ^4 V  l3 D
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ' o: N7 M. F! h1 `% b5 w
  26.                 if (charSet == null || charSet == "")4 [4 a8 Z7 u* X, w
  27.                     charSet = webCharSet;
    3 S  ~  T$ A& ], A7 U
  28.                 if (charSet.Length > 0)
      |( X3 I+ X! Y. v7 X/ X
  29.                 {
    0 I& X* k6 N7 z! m
  30.                     charSet = charSet.Replace(""", "");
    ; n8 Z/ e0 r$ d$ F6 O% i
  31.                 }
    " k1 m) _3 ~: H7 E8 D
  32.                 if (UseUTF8CharSet)
    5 Q( m7 m* \9 H* _
  33.                 {" R- g9 j$ Y+ `8 n! I
  34.                     if (charSet == null || charSet.Length == 0)
    % h" P  S; c3 o* ^$ p
  35.                     {
    ( Z" e3 Y- c/ W. y
  36.                         charSet = "utf-8";9 T/ c2 m; \+ g) K6 f& U
  37.                     }* K7 E/ ?# k2 x, Y' D" x
  38.                 }$ W0 s3 R) S7 }0 E
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    2 K4 K; @& T6 j2 E9 e6 G) C# E
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);& u4 W6 v4 G' x) t

  41.   i3 g( N! P& L( ]
  42.             }
    0 A( k. l" T- t& y2 L
  43.             catch (Exception)7 g. T- j- K( p' N" D) K
  44.             {- t" {, T: s  G$ b
  45.                 strWebData = "error";
    * {  v( J/ ], H5 a$ P% S
  46.             }
    + f* q+ q- S: `: Y& O. C

  47. % J4 x, g4 A' ]! r5 |) @
  48.             return strWebData;  ^) S$ I; F: O* f: _5 c% }
  49.         }
复制代码

# r4 S& M- w  O/ |& I+ r2 L! m* i& R- n6 C
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-15 05:00 , Processed in 0.055178 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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