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%,国内持牌机构  
查看: 9742|回复: 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 抓取全站链接
    " E* O. R/ B' f% R
  2.         public static List<string> GetAllHref(string url)' c; ]( J8 L( {: |8 v8 `
  3.         {
    ) l' I# @+ f6 k: U, Y) o1 n# @& h
  4.             List<string> allHref = new List<string>();5 x* h4 z  v$ t! Y" Z6 |' F  e& z: S+ I
  5.             try/ D1 ?% t: n! x$ d$ A. n
  6.             {) H) s& }' z; U7 [1 h" N% W
  7.                 string strhtml = soso.getHtml(url, "", true);6 A- E& F% m; n
  8.                 if (strhtml != "error")6 n9 |8 n* k& S8 c( v* s
  9.                 {
    ! A' j6 U" u; `9 Z
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");. |1 _2 E1 ?5 E2 q$ h
  11.                     MatchCollection mc = reg.Matches(strhtml);* I' B8 f" W  g) E8 p
  12.                     foreach (Match m in mc)
    $ L( E; _1 R' Q2 n
  13.                     {
    1 E/ E: Z5 ?3 b
  14.                         Uri uri = new Uri(url);
    & M; g  c2 Y, t  g! J
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);4 `- A2 @( O9 R/ e( L
  16.                         string fullUrl = "";! z  m  c0 R+ j* V' @' f* f7 C
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    " n6 b/ Q: F2 Y1 f
  18.                         {
    % A1 y6 x+ e/ Z- z% C
  19.                             fullUrl = m.Groups["url"].Value;' f; @; I: N9 R6 _" {
  20.                         }! \/ k* i6 v" Z0 O
  21.                         else
    ' N6 T( m) f0 G& w5 ?
  22.                         {( f1 w% D3 k% b# b7 v9 c+ \
  23.                             fullUrl = thisUri.ToString();6 B, W# I6 _- U  o) z2 q  p0 `) @
  24.                         }
    ' f: y: U, p, F0 V. `
  25.                         allHref.Add(fullUrl);. W" e8 P# r' O" N& y
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);! B; l, m3 G* Y" ~6 J
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);5 J5 T; T) ~9 M+ v2 Z: L
  28.                         //Console.WriteLine("补全链接:" + fullUrl);6 l$ V! Z' H; Q/ u4 R' j: U- h
  29.                         //Console.WriteLine("…………………………………………");' f6 d; d1 r; c: z# p( W
  30.                     }
    % v( d6 @  w) z# c4 g+ s9 ^
  31.                 }
    7 x/ K; G! Q$ _# g1 t$ i7 G
  32.             }7 c: h: a6 V9 N( M- v
  33.             catch (Exception ex)4 F& ?% `: I4 P3 J2 S" w
  34.             { }
    3 O1 z6 \- c2 ]8 a- |& A& e9 \+ S
  35.             return allHref;
    6 ~* i+ B0 E/ @* I' M
  36.         }9 u( I; o) F" ]; `/ l$ C
  37.         #endregion
复制代码
4 ^8 k: {2 \$ Y8 s) t! A
' h6 X1 C$ Z4 ~) g2 H% [3 o

  1. 6 F1 k8 ?- n8 s4 ]1 W& U
  2. ; ^, g3 I1 C% f2 E) ]; _; |4 L7 A9 I

  3. * W2 n" q( l  Y* h
  4. #region 数据去重; a' U8 O/ e# w, a
  5.         /// <summary>2 B# A8 L$ t/ _$ m# h! k! q
  6.         /// List<string>去重
    * a. |* T6 |/ W+ o6 X
  7.         /// </summary>
      c+ N' O( |: f4 o
  8.         /// <param name="list"></param>/ X$ T* Z% u3 L& D
  9.         /// <returns></returns>2 J1 g3 q) J7 z/ t& S
  10.         public static List<string> getUnqueList(List<string> list)& Z1 M2 i$ ?0 d  ~' {
  11.         {
    5 e" c& }) w/ s* c( F, b, K4 C
  12.             List<string> list1 = new List<string>();& \  _$ g6 b; M$ v! r: U0 O% y
  13.             Hashtable hash = new Hashtable();5 d- M/ }" P" m2 T: g, x$ i; H
  14.             foreach (string s in list)9 B, A% M) q; w0 G
  15.             {
      E; ?2 y8 L: u. ^
  16.                 if (!hash.ContainsKey(s))) h! D4 S; @. {( M/ f% s
  17.                 {+ T2 h+ h- j8 ^: S0 X% L  M
  18.                     hash.Add(s, s);
    1 h) S  J; \$ w, J5 [
  19.                     list1.Add(s);* ]4 C) c8 G8 S7 g
  20.                 }7 F+ A1 |* @$ c; t/ E, ~8 W3 N4 V- l
  21.             }+ k# u$ K0 D: O" d1 G$ X
  22.             hash.Clear();$ d0 u- P! t4 g; D* W* I2 j: v
  23.             hash = null;
    ; M, l5 I  X7 X$ V# x- r) v
  24.             return list1;
    " @4 U5 M2 D. B. f1 c: \
  25.         }
    . a5 c" M5 h( H1 Q6 W! q7 A+ Q
  26.         #endregion
复制代码
7 C# x6 N! v! w+ f; ~4 K* z
" G; k1 P9 v- c/ Y/ ~

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
; i! w1 C- D6 B! V6 {+ t8 \
十分感谢!!!非常感谢!!

点评

缺少一个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/ m5 H5 A$ A: K1 I1 `
十分感谢!!!非常感谢!!
4 s; M7 r: ~& E2 d' e( y+ @" _' g/ B* h9 {
缺少一个gethtml,用下面这个:6 Z/ \* t( Z% u, N/ C( Q  _( I
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 8 Z% T/ `& k. j% U# K5 [
  2.         {
      G$ {& v+ |2 B4 W8 p& K7 O
  3.             string strWebData = "error";
    + k1 _, }# o; M% Q. {
  4.             try
    7 @# o0 S7 F, H5 z1 r7 ?
  5.             {. v# y! W3 m' G
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient : k5 P. C6 L# T& @! a+ }
  7.                 // 需要注意的: % |' v. d! q4 b- m% j; G6 s
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    3 c/ a2 P% O, m! b2 ~) f
  9.                 //这是就要具体问题具体分析比如在头部加入cookie   p2 J7 f5 J0 T4 T1 j6 G
  10.                 // webclient.Headers.Add("Cookie", cookie); & k% q- r& o$ B& `
  11.                 //这样可能需要一些重载方法。根据需要写就可以了3 [' t6 Y- Y/ r* M7 o9 K5 E7 C6 [: A
  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)");
    . o% ~) |& ~- w( O( g; ?1 i
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    1 n' z& H. k3 b* O6 R
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 8 @- a8 `1 n0 s6 l
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    9 l7 x& B$ O: C2 X. U4 A# v0 ^
  16.                 //如果服务器要验证用户名,密码 7 H! o- C% ]; k2 w2 t
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    " z$ u0 U  p1 R' ~
  18.                 //myWebClient.Credentials = mycred;
    & e3 k# l( i, l; o
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 4 A) C' d( N3 |, t
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);% }/ y0 U& S, x# U
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);6 H, ]1 p' f) z$ y( {9 P

  22. % y4 M& X* F( E2 _
  23.                 //获取网页字符编码描述信息 ' \4 S9 N+ E2 ?6 w0 O& g
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    4 W6 n* A7 [+ |# i
  25.                 string webCharSet = charSetMatch.Groups[2].Value;- Z2 r' }1 v9 z; q; z
  26.                 if (charSet == null || charSet == "")
    ' q  E) n; p' H6 y# W
  27.                     charSet = webCharSet;; U$ @$ L1 C' ~/ U" J! i+ R  ?
  28.                 if (charSet.Length > 0)4 ^, G. ]8 |, H# S+ `) _
  29.                 {6 j: K6 L# {& T* @( F6 m! _
  30.                     charSet = charSet.Replace(""", "");
    ! Y8 p3 D3 e6 n, Y
  31.                 }+ V- K# F) `0 b) i' Z* n9 m
  32.                 if (UseUTF8CharSet)
    : O4 K7 z4 I5 }9 D# m5 X! X: W
  33.                 {, F6 @; c/ e- G2 A6 e. o- P3 b
  34.                     if (charSet == null || charSet.Length == 0)
    ! l# r. [5 d; c
  35.                     {# R0 L- l  K" w
  36.                         charSet = "utf-8";
    7 C6 o8 g4 D( A6 c9 u
  37.                     }' H. c( h+ `8 U8 @* C
  38.                 }
    7 [6 I! v2 C6 o% n
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)  j5 v' l. g4 T' m3 P. l7 A9 u
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    8 Q7 b8 T* @& d/ R& h
  41. # D* g3 I' K& R% S
  42.             }$ E* Z# H8 i0 A& J) m: }
  43.             catch (Exception)
    0 E: V- O" ^4 P$ z' {( S
  44.             {
    % u# r% G/ ?7 F) d+ D& j
  45.                 strWebData = "error";" U* d* E! V& K+ e" t/ \
  46.             }
    7 G5 b. q4 \+ T, I& {; x( O4 H
  47. 5 l" R& c# J: ]3 D4 `
  48.             return strWebData;# q% ]  o8 V3 R3 n5 ?8 S
  49.         }
复制代码

) ]" k, D; b5 U; |# V" P) S# d9 m; b2 M3 u" S
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

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

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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