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 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9948|回复: 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 抓取全站链接* T+ V$ J: c, F
  2.         public static List<string> GetAllHref(string url)6 C8 g6 g/ g/ n. R4 n
  3.         {5 ~! E* w; W7 z4 ]" K+ J. W7 Q
  4.             List<string> allHref = new List<string>();
    9 N8 S! t+ i+ e: W3 q' X4 l" {
  5.             try
    2 A2 y6 X7 I+ ^3 Z
  6.             {
    / p. n/ [8 y' V" Y2 a. \
  7.                 string strhtml = soso.getHtml(url, "", true);+ C; ~, k6 C$ f0 w. }& g
  8.                 if (strhtml != "error")
    + s' K$ z/ x4 |0 {2 q  e7 }
  9.                 {
    $ y' \- _: C/ g" D. O4 N
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");2 k5 J( P4 A! {( |/ M
  11.                     MatchCollection mc = reg.Matches(strhtml);
    & x1 s0 P* B, }6 z
  12.                     foreach (Match m in mc)
    . n/ k3 ]! n: f" l  h
  13.                     {' H8 B! |; N" D" j
  14.                         Uri uri = new Uri(url);
    7 Z$ _& t( K0 N% Z0 u$ a$ O$ A
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);" C2 r' j+ E2 @7 K9 S' a3 W+ i
  16.                         string fullUrl = "";
    * ]% x7 D: p8 T% t) z# s
  17.                         if (m.Groups["url"].Value.StartsWith("http"))' L; B! F- v/ K8 P
  18.                         {5 @- l0 ~# f! H9 ~# _7 y
  19.                             fullUrl = m.Groups["url"].Value;
    ! s1 N8 {3 P5 {+ H* ?+ ?
  20.                         }
    + a# o+ m' D  e% d$ I% }& o* D& D
  21.                         else
    8 T/ [7 i2 X2 n9 \* t3 f' u4 f
  22.                         {- J- N# q' @8 q% @# H' P
  23.                             fullUrl = thisUri.ToString();
    6 e0 g  F$ p: p
  24.                         }- G& r% q$ m1 _( O
  25.                         allHref.Add(fullUrl);8 v, k% Y/ N' h0 S+ o  n# \8 x9 q
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);1 J+ s* P" n% Y1 r. }9 K" d0 f
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);( ?1 ?( W: S& }+ [( c  e6 I
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    3 U; Z9 |" Q& G$ P, n9 W/ M5 }
  29.                         //Console.WriteLine("…………………………………………");8 S8 j) d! e% i: G+ A6 b) R
  30.                     }
    * q4 @* z1 a: g  K- ^6 i( f
  31.                 }& f8 e/ O5 K2 F7 n1 z- S) t
  32.             }
    / V- |( t2 n! B$ _$ ^1 L5 S1 C  r5 U" z
  33.             catch (Exception ex)
    ( {4 T! M6 o6 Q$ D. d" u
  34.             { }* G3 w6 R9 u- ~% |' d, ^( z0 X( N/ w% w
  35.             return allHref;
    : T* u8 T3 a: {2 }% O! M
  36.         }
    3 Q* E  V: U" d& }8 G
  37.         #endregion
复制代码
! }  V. F4 D0 Z$ P% G, N2 ]

( W& r% \0 w+ \2 N; g/ R
  1. / q+ Z. K: c( h

  2. 9 A& B  F) E4 z! p" Q& n

  3. % l: [' P/ v4 ?  m8 j( h  e
  4. #region 数据去重
    ) _- s8 I/ w: ]0 ]3 ^
  5.         /// <summary>/ @1 q4 l$ R' }/ @! }& G% H  S  [
  6.         /// List<string>去重
    ! Q( j  h4 ?! P0 N( i7 J% Q
  7.         /// </summary>+ H7 c1 U- @6 Y- c3 q0 Z8 {
  8.         /// <param name="list"></param>& B2 t4 ]+ L( X  }
  9.         /// <returns></returns>3 e! i, ~* f& T/ @
  10.         public static List<string> getUnqueList(List<string> list)
    : G- F" k7 U# F9 f
  11.         {* c! |2 {3 U7 x" w
  12.             List<string> list1 = new List<string>();
    1 [( V) I+ m# Y
  13.             Hashtable hash = new Hashtable();/ j" \) ?! Z2 n7 t
  14.             foreach (string s in list)
    # l: I; v7 r' X# K
  15.             {
    # Z4 a8 H( K! m& m
  16.                 if (!hash.ContainsKey(s))+ ~, E* v5 P& k1 }$ U4 G
  17.                 {1 W- u  k: i2 s. \
  18.                     hash.Add(s, s);
    3 B$ o" l9 R/ H7 |+ K) e7 e
  19.                     list1.Add(s);
    4 ]5 H0 \6 M3 C% l
  20.                 }
    1 w9 l0 N6 `$ w
  21.             }0 h4 ]: B# b1 r8 u& A6 z
  22.             hash.Clear();
    2 n7 K7 @! \! F  `
  23.             hash = null;# s( Z: b; e1 E. R4 w6 W( a0 S
  24.             return list1;
    # e) W9 N: s) K  k5 L6 {
  25.         }
      U2 V- i( p: E( B3 R
  26.         #endregion
复制代码

3 z$ F1 g+ l6 M" A/ t2 }0 Z" E
7 n' [# [2 n/ a8 ~

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

6 Q) u8 h! ^$ G$ [3 Y1 E5 N十分感谢!!!非常感谢!!

点评

缺少一个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 W: Q' M$ ]  G  ^' p1 {9 P1 K2 O十分感谢!!!非常感谢!!
4 i/ \" X/ m7 |3 r
缺少一个gethtml,用下面这个:
+ Y; X6 j! |) q. k
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    3 g* s& S" ~. S" y" W/ C$ m
  2.         {" r# Y) U+ a  ~4 j% H
  3.             string strWebData = "error";
    5 t$ c* G7 L# S- S
  4.             try
    / V- F1 ^. {" M2 w7 p6 E9 z
  5.             {6 ~& k' E7 m# G5 L
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    0 `, X; r0 S3 |9 p
  7.                 // 需要注意的: + K% ]! q0 ?5 l& p
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    ) ^0 a) J0 V5 n+ d" A" ]2 R
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    5 T" z5 c' Z, v9 q% `( g
  10.                 // webclient.Headers.Add("Cookie", cookie); , J3 l/ Z% @5 c/ d8 Z
  11.                 //这样可能需要一些重载方法。根据需要写就可以了' |6 e4 u& b9 d" a6 n
  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)");
    + D; a( W2 i* k
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");8 K* o3 e6 x* d
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    3 F8 d4 |6 T1 r" a3 K  ~$ r
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;2 {$ Z: G+ x: k8 d0 {
  16.                 //如果服务器要验证用户名,密码
    ( X9 w( y7 K/ T
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    # C: T! o$ C" I! d
  18.                 //myWebClient.Credentials = mycred;
    * R, b: n4 T" ?9 \% \* G
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 8 }' d- g! G) g7 h, J
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);- ~. @8 ?3 W. G+ |, B, b
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);+ ^8 D" L! {& c2 f
  22. ! i- ?: N3 |- ~! n  S
  23.                 //获取网页字符编码描述信息
    4 i. H2 v: J# j/ b/ A3 s' A
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);6 Z. d6 @/ Q% j+ T# `: N
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ; T: u! q3 E/ H- R% F) d
  26.                 if (charSet == null || charSet == "")
    7 {: R: R$ O& e/ ]8 ?
  27.                     charSet = webCharSet;
    + y& b$ R" k2 [0 E; W" N: |- x. s
  28.                 if (charSet.Length > 0)
    , t% c; {+ ~! ?! ~- D
  29.                 {
    " S" Y) t1 j1 V; T$ m# }
  30.                     charSet = charSet.Replace(""", "");
    ! s/ U: k  r1 c. Q6 b
  31.                 }# l7 p# C) X% a2 \
  32.                 if (UseUTF8CharSet)
    9 w; v4 @+ [) P  A" E
  33.                 {  u: [3 n6 F3 Q, k7 ?( M
  34.                     if (charSet == null || charSet.Length == 0)
    , o) ]' a+ B$ ?  _
  35.                     {. S& y- @3 S/ E  T  T7 O
  36.                         charSet = "utf-8";
    1 Q1 i4 x+ y+ y% \5 d3 X$ ?
  37.                     }  N4 l3 a9 W7 o2 `' m( Z
  38.                 }6 b6 S# v+ ~. @) R5 C% q
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    3 i& V/ T  g0 G. W
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    0 n0 t( e% X% A
  41. ( n- u& F' c) g4 G
  42.             }1 n% m( Q. ]- e2 v
  43.             catch (Exception)2 J/ Z. Y2 B. |  c% }5 x0 n
  44.             {7 W3 |& X  B% v' s1 b1 c  a) \
  45.                 strWebData = "error";
    " V  F" W# L, t! z
  46.             }  P8 k4 F1 o6 h+ D" R5 ?' K

  47. * ]7 ?: t, k' J
  48.             return strWebData;! h& @9 }2 C7 {
  49.         }
复制代码

7 v/ j, }* N* K: g  R0 L# B' n* M0 v/ u' h9 u+ a' F* n6 W
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-11 15:21 , Processed in 0.065987 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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