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充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
高品质·稳定高速纯净IP FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%
DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9941|回复: 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 抓取全站链接
    # W9 _4 a% \& q0 L5 q& ^  Y
  2.         public static List<string> GetAllHref(string url)
    " N. `: k) f* P2 P7 h/ B
  3.         {
    0 ?/ i# a, E( O. V( M
  4.             List<string> allHref = new List<string>();' b) p  j$ U, f+ y) [
  5.             try
    # O6 W5 y1 w9 O  Y+ O
  6.             {
      c2 Z$ [7 D2 g- J6 I2 O8 B
  7.                 string strhtml = soso.getHtml(url, "", true);2 _/ o8 z! g0 f2 a* p5 }
  8.                 if (strhtml != "error")
    & s* H+ j0 A, W; [- Q) z
  9.                 {
    ; W0 N/ w1 M& b. y0 i
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ' C6 K  Q: U/ S  V
  11.                     MatchCollection mc = reg.Matches(strhtml);
    + Z8 Y" S* [( ^
  12.                     foreach (Match m in mc)' k6 t3 f9 J+ b. W8 k6 m3 ~5 \
  13.                     {& R4 w# f8 X, s: k2 b4 ]% Q
  14.                         Uri uri = new Uri(url);
    . l0 [9 S4 H, I: x
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    & y' d5 i. P1 Z# s, c  _- r( p
  16.                         string fullUrl = "";
    7 j; ]7 C7 h( b
  17.                         if (m.Groups["url"].Value.StartsWith("http"))" h0 l0 N3 @4 f/ g+ x; x
  18.                         {# ?) f0 T3 W- }- z
  19.                             fullUrl = m.Groups["url"].Value;
    1 ?! c, d1 U  \  W; D# U7 N
  20.                         }* A* ?2 d3 t. X4 ?7 `
  21.                         else- s, |' K+ f" p3 P) h9 w7 L
  22.                         {
    6 }8 C5 {+ ~5 q& }
  23.                             fullUrl = thisUri.ToString();, V4 O- X2 f! K" @+ d
  24.                         }+ i# V6 O9 {/ ~+ K
  25.                         allHref.Add(fullUrl);- h/ J, R" o. S+ p
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    " X, Z& R" n0 W. e
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);, r, o" ]& a# ]" K' Y
  28.                         //Console.WriteLine("补全链接:" + fullUrl);& U# d' p- e6 h+ J) T  B
  29.                         //Console.WriteLine("…………………………………………");7 r' `( X$ n% `. ~/ [  h
  30.                     }+ y+ R. G  C# J+ t' Y6 d
  31.                 }
    2 a9 S  X' l, E! s" |/ u
  32.             }
    2 i4 ~8 d  R2 K/ y% i
  33.             catch (Exception ex)9 y' I% {& D& q4 R: S* ]  b
  34.             { }
    6 @& r( U/ E* w9 `4 z
  35.             return allHref;
      W  L+ \) }0 B9 @8 v
  36.         }' D& q+ K; S; f
  37.         #endregion
复制代码
2 O* [- I. R) H& a
: [3 ?) x! Y2 m' U6 q$ o

  1. % e4 n5 T: @! i% R$ `; e

  2. + g) o+ M, Q2 j3 E* ]3 \4 h7 H9 M/ j

  3. & q5 F* B. {- z  L/ ^
  4. #region 数据去重3 W* d; G$ ^' s% O
  5.         /// <summary>( @  y' r- I8 I7 q% S
  6.         /// List<string>去重
    9 Y2 d* [3 x, ]$ _
  7.         /// </summary>! [# x8 `0 o* |- O$ u9 `6 w% a
  8.         /// <param name="list"></param>2 E+ H7 J6 i) ^3 n' k! p, L
  9.         /// <returns></returns># K: Z% [% C) u" q
  10.         public static List<string> getUnqueList(List<string> list)! L- F6 q. |( o. |& c3 X6 T6 g# v5 i4 j
  11.         {
    . o" r' H3 F. j. ?, t
  12.             List<string> list1 = new List<string>();
    / `. i9 n2 E7 r: m
  13.             Hashtable hash = new Hashtable();
    ! ^! K5 m7 L% D* {% G) i6 ]
  14.             foreach (string s in list)
    , L" x0 ]8 B1 Q
  15.             {
    ) N5 ^- _: V; x" I! x; P$ ^
  16.                 if (!hash.ContainsKey(s))+ C+ d) V# [2 M, b$ r
  17.                 {# x9 F' S7 B, b' B1 _
  18.                     hash.Add(s, s);
    7 T& K- p2 i9 ~* ?' R  s
  19.                     list1.Add(s);# T, R; |: x8 }: g
  20.                 }9 i- u% \! W$ [! ?6 b8 u/ P) a- |$ `
  21.             }0 U, l& D9 s4 i6 s& F
  22.             hash.Clear();6 S2 v; s: A: _5 H6 f
  23.             hash = null;
    - Q9 h8 }# @/ w- E
  24.             return list1;; w2 ^2 U3 ^1 c7 C4 c  p* c# F
  25.         }9 C( K6 H; F( z# N) i
  26.         #endregion
复制代码
4 m* [7 |1 i5 B) O" n8 O8 ]5 G

) Z+ I- v* L& k& J

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
" n4 G/ s' I, O. ^4 _
十分感谢!!!非常感谢!!

点评

缺少一个gethtml,用下面这个:  详情 回复 发表于 2016-2-26 16:23
回复 支持 反对

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:209 c9 }( r. A4 R+ _  y. N
十分感谢!!!非常感谢!!
* Y2 ?9 V9 c& K# @. Q2 g3 @* u$ @
缺少一个gethtml,用下面这个:# t5 ?6 z( Y; b  O  Z& Y4 ~; S6 A
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 5 R- {8 T, s" f* \2 h* y& s
  2.         {
    ' ]# X# n. A4 H: ]
  3.             string strWebData = "error";( N" @( O3 b9 T9 u" N- s# \/ Y! e
  4.             try, f) Z6 P/ i; h: B7 R2 z
  5.             {( O6 \: T! b3 M# U% m. `
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient   Q% F& Q  H( b, V
  7.                 // 需要注意的:
    ! i% O3 H3 F8 E7 z
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    6 j! w, S; d. H3 V0 N
  9.                 //这是就要具体问题具体分析比如在头部加入cookie + ]& C" I/ H: L% u- {8 I
  10.                 // webclient.Headers.Add("Cookie", cookie); & F2 k: Q/ ]5 m" F* ?0 T
  11.                 //这样可能需要一些重载方法。根据需要写就可以了7 ~2 T( }2 Z8 P0 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)");
    6 D* C. L9 _& _" G! i7 w
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");' G9 _, G4 \$ d) R  \
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    3 [$ _9 i4 O# @2 }* A; I  K$ s, |  A
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    1 O( ^- p  S$ _" S, P5 k  A
  16.                 //如果服务器要验证用户名,密码
    / N0 Z% Y" G) p& u- q7 O7 b% t
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 3 u4 ^; p+ o+ \/ [
  18.                 //myWebClient.Credentials = mycred; 9 E+ \3 C8 m9 v. o6 j8 m; Q2 G
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ! C1 Q; }! s7 n0 z- _6 x, |
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);. `/ n5 ^9 {. h9 h- N' e3 R: m; R( W
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    & O% g3 {. g; Y" O0 z2 Z0 j! B

  22. # T. `9 ?& U7 t7 I( m5 u' U
  23.                 //获取网页字符编码描述信息
      g  Q, @# K# d( a
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);1 W- ?: b4 @' w# O
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ) t8 \: q+ W& L7 v( }, G  ~6 s
  26.                 if (charSet == null || charSet == "")
    : W; L) G+ E' C2 r- Y7 R
  27.                     charSet = webCharSet;* o- t: h1 O+ Q# Q# Q, l9 ~
  28.                 if (charSet.Length > 0)
    7 {* u# K' J3 f0 d" i0 P
  29.                 {0 [2 {% ^- f& r+ E  n$ n
  30.                     charSet = charSet.Replace(""", "");5 ~% D/ \' f. ]7 ^3 U$ K
  31.                 }1 T+ g' ]+ n* p! S+ x
  32.                 if (UseUTF8CharSet)
    8 c% C& F# U; u0 {$ x
  33.                 {  W( M- y% W$ v& E! j% `$ A
  34.                     if (charSet == null || charSet.Length == 0)
    % z0 f- C* ^# F4 T  R0 V. g
  35.                     {
    , f# Y- `/ r+ e- V. R( X3 L; g
  36.                         charSet = "utf-8";
    4 d' Z. Q+ i. H) C5 {! L/ E* r2 A
  37.                     }! p& E+ p4 W9 u: }6 ^$ p: `! ^
  38.                 }$ A2 [+ n$ E2 B; C0 W3 m  W/ @0 f/ @
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    : G8 g! V5 n6 Z7 N1 w( E# ?
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ) q2 R1 v8 c  Z; J  B9 J; R% m  P' n
  41. 2 k# j& O9 T; A' f" M
  42.             }; b8 K4 s1 B2 ~
  43.             catch (Exception)0 o! u; a4 @* G! W& t
  44.             {
    + O$ d  E. m1 _  `- c( k
  45.                 strWebData = "error";
    ( ^) D9 {9 I2 `: N  W. [
  46.             }
    * [' E! {6 ]& [- a: c

  47. / w/ r9 Q) X2 o3 A$ ]
  48.             return strWebData;; k! P3 o3 R1 {) H5 E3 D
  49.         }
复制代码
& b6 i: A& t& d$ K2 j& z- N7 m" \. [

" W8 \$ F7 @* m" N1 j' A7 T
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

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

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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