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%,国内持牌机构  
查看: 9759|回复: 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 抓取全站链接& A% }( z* `  E* |  \; ?' W
  2.         public static List<string> GetAllHref(string url)# U# z: s" W  p- u/ ?
  3.         {
    5 [( ?& a- u  Q1 v6 R
  4.             List<string> allHref = new List<string>();
    . X7 Y  _1 n! f# S
  5.             try" g; P+ O8 u2 c% B: L! K& s. g
  6.             {$ d: R& q. S; x! S! A
  7.                 string strhtml = soso.getHtml(url, "", true);# c, M: O, T& p0 W
  8.                 if (strhtml != "error")
    # Z3 N% o( f; F: }8 L
  9.                 {$ w" ?4 d. G0 ~& h, }
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    5 Z7 U/ t' H9 M5 g
  11.                     MatchCollection mc = reg.Matches(strhtml);4 D; Q* g+ q+ P9 C- E: f; k$ X, v" A
  12.                     foreach (Match m in mc)
    : z6 j7 Q7 l; B/ K
  13.                     {  A: X' Z4 Q! e$ {4 u0 i  Y" o
  14.                         Uri uri = new Uri(url);
    ; m, g0 u0 I0 ?. e5 D5 l
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);6 x: s$ ]6 z" |& [
  16.                         string fullUrl = "";
    6 M1 x. a5 K" a/ j: J
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ; w1 B5 Q0 y& y
  18.                         {
    # c! V0 k7 \: s0 B$ U
  19.                             fullUrl = m.Groups["url"].Value;
    " D3 H9 G6 i  w/ k; b  z, I) L
  20.                         }
    9 z1 z3 l& M; T# }4 g
  21.                         else
    7 A% ?6 M$ p% R: g# p
  22.                         {
    6 B# _. m# @- b* g, g$ z/ O
  23.                             fullUrl = thisUri.ToString();8 D4 _1 D! d. [# ~
  24.                         }
    - Z$ D5 C- i7 M! m8 S
  25.                         allHref.Add(fullUrl);
    4 k1 \, T! b, B9 u9 p
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);' S! p, k' h4 A4 ~, e
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    2 K3 a. L2 V4 |% U# f2 O! M6 _
  28.                         //Console.WriteLine("补全链接:" + fullUrl);- U- f$ q+ m$ D, \
  29.                         //Console.WriteLine("…………………………………………");/ Q# h' E: ]7 c" ?" T
  30.                     }
    0 Z/ \2 c" w8 i+ h5 `+ c
  31.                 }5 J3 |2 l( W& \" j7 Y2 `& ]
  32.             }/ o8 P* a. \: g( ]+ x' ?7 ^4 |
  33.             catch (Exception ex)
    7 Z# h, s7 H6 d4 _2 J$ `- Q- d
  34.             { }. \7 j9 Z+ y; ?3 O3 Y5 X+ a* {
  35.             return allHref;
    0 S1 z( ~  S+ K7 _$ O
  36.         }
    8 O( r- X3 u- _' K2 M8 e# U" @# h' j
  37.         #endregion
复制代码

! L3 l7 D, O$ V! W7 R" l& k& l% d, t- i

  1. ( d! |0 F0 ]5 D& g5 [+ U

  2. ) H! N. T8 Z2 A" }; e% A# y
  3. 9 K( C4 }. c7 N' y- M5 b
  4. #region 数据去重* O2 b$ Q/ t( D* J
  5.         /// <summary>
    % R' \- o  G' h) p- N4 H- g2 \
  6.         /// List<string>去重
    ' w, ~' Z' T* D# E- l/ `) X
  7.         /// </summary>' W5 X+ r( ?/ L' A
  8.         /// <param name="list"></param>/ d" \, w+ h* C# P5 ?0 l
  9.         /// <returns></returns>
    : i3 B9 n( x  ]8 C) p
  10.         public static List<string> getUnqueList(List<string> list)# W( Q4 J) [5 R9 U# `- U" h5 D
  11.         {% T; ^  d+ f, E1 W
  12.             List<string> list1 = new List<string>();& C+ b) w( ~6 ]" p2 \
  13.             Hashtable hash = new Hashtable();
    1 Z: f( k& v) c* u' K; t
  14.             foreach (string s in list)5 g) F" _4 S( e
  15.             {& K3 V6 B& O' i# q% S
  16.                 if (!hash.ContainsKey(s))# I! T, F8 i- i
  17.                 {! l( J3 N6 G& q
  18.                     hash.Add(s, s);! i, F/ E5 ]: [; M; K* m# K& x# u9 ]
  19.                     list1.Add(s);
    . d# G# K0 Z! {! A: F
  20.                 }3 u% \$ w( _  {4 T1 m
  21.             }/ d* s- F7 V3 O- _* V, j
  22.             hash.Clear();7 M/ ]( G! q. G4 ^0 [
  23.             hash = null;
    " p, O- k9 i1 C3 p
  24.             return list1;
      g# N+ K& M. U: W
  25.         }, [3 |! v0 T5 w  W& o7 ^
  26.         #endregion
复制代码

: ~. F' O  T: r1 h' s; B9 U. l' Q% G: G6 y& h! `

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
8 Q. `, G+ y6 m0 m/ z: I
十分感谢!!!非常感谢!!

点评

缺少一个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+ f( ~2 ~$ |2 ^: q
十分感谢!!!非常感谢!!
! r+ `; P1 ?5 r2 w6 f% V
缺少一个gethtml,用下面这个:( g7 l, H2 w3 h, L
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 1 k+ U; K  N/ t6 `7 S: K
  2.         {( r) |3 q% W) Z8 y. k
  3.             string strWebData = "error";
    6 a. P* E( ]2 S0 X8 |& V
  4.             try, ]. r  @0 S9 W) ~
  5.             {$ m# T& i+ b8 s/ ]( U) G
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 8 A, o: z3 M" O6 C! t9 Y9 a( X) C
  7.                 // 需要注意的:
    ' @$ S: ~* T; k: O; q/ M/ _" X
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    , [4 Y5 k, d- r. S2 J7 m
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ) M/ L! C3 I& }: b
  10.                 // webclient.Headers.Add("Cookie", cookie); . j- f/ Z/ l5 s! p) T: [
  11.                 //这样可能需要一些重载方法。根据需要写就可以了# r4 Q6 U" {( o5 I+ l% C' R6 `2 R
  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)");
    4 f) E5 r- l# m1 f, o8 x
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    # S) z/ J6 h/ V* l( M! _
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 # J, v, D& I. _" ?
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    7 Z; U1 L+ ?7 v0 Z! T
  16.                 //如果服务器要验证用户名,密码
    : U6 n) D: t2 T- R
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    * }. g- |: A9 C1 M
  18.                 //myWebClient.Credentials = mycred; $ N( J( B, B1 a/ m6 Z
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ; B8 S- M. M2 E
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    3 a: Y* x' m% I/ b4 \+ [3 y) _
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);% x% B8 V4 a' ^
  22. 3 s. a$ L4 d. O, P3 A2 k& O9 ^) q1 d6 L4 W
  23.                 //获取网页字符编码描述信息 8 N4 x- f- g/ K% I/ A; S
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    + O1 h# M  N6 t7 l
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    4 v- `- u  ^4 C2 @
  26.                 if (charSet == null || charSet == ""): J2 h3 O' T! l; \  ]+ \0 ^
  27.                     charSet = webCharSet;
    5 D! M7 o/ j& S: A, a; Z+ `* @  N
  28.                 if (charSet.Length > 0)
    ! Y7 J6 W. T% Q$ f( L7 e
  29.                 {
    4 p4 k4 l4 ^+ K7 h) t7 D& X
  30.                     charSet = charSet.Replace(""", "");4 B' D2 l3 l6 H4 m' a2 O' K
  31.                 }( a& o3 \, f* z; n9 A$ x  d1 V+ u" V
  32.                 if (UseUTF8CharSet)  F0 C% @- M0 A& A  B) n7 A, c
  33.                 {
    ! l' `! F2 J: C$ u
  34.                     if (charSet == null || charSet.Length == 0)
    , v( @' q9 ?" F* I/ `& e
  35.                     {2 b& G/ k0 `8 N; |
  36.                         charSet = "utf-8";/ M; O! K9 d: g' N  Q' m$ \
  37.                     }2 r3 q8 \7 ]1 |2 v' r7 h6 ]
  38.                 }. }( X/ X& C( T1 p
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    * v: r7 {1 U2 y* }5 p
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);4 p* R) u6 h. K% k8 X' R5 [, d
  41. + f  U, ~4 t9 ^$ F# O% A
  42.             }
    0 ~  ]1 A3 W+ K( F* j/ J8 u( J
  43.             catch (Exception), z6 B# f$ ^2 y
  44.             {$ y2 k# |; E) _, H! E7 r; S, ^* ~
  45.                 strWebData = "error";
    + G8 ?6 t6 P* O
  46.             }8 Q- g  m' g' n9 t* C

  47.   ~0 h% j- @3 g; s
  48.             return strWebData;' o" B, r# v4 l0 s% z) i
  49.         }
复制代码
* H: z2 x8 _6 U  q
4 |% E3 }+ f$ S- N
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-17 07:26 , Processed in 0.055671 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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