AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
⚡️AdsPower:安全不封号,高效自动化⚡️E.PN 虚拟卡⚡️FB BM不限额,短id账单户BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户提供TK企业新户老户、谷歌新户老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量优质住宅/移动代理/高匿名/高性能
TK白名单老户|兼职广告可投⚡比特指纹浏览器+云手机, 4.5折起T3NZU:定义应用网盟新时代FB个人号源头服务商
寻找顶级电商?AdsBranded等你!TK老户/国内外端口/预审/加白广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9697|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

203

广告币

287

积分

初级会员

Rank: 2

积分
287
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    8 B+ ?( d* C/ Q$ \! }
  2.         public static List<string> GetAllHref(string url)
    - x5 ]! l) a0 N* ^
  3.         {% v% n# j. ]% @6 P% z! P9 r8 K
  4.             List<string> allHref = new List<string>();
    ' o# U% R6 K& B3 u
  5.             try, S. u- [" ^7 {9 R  a  @
  6.             {
    # ]* x/ j9 Q0 e8 @! [% j% C
  7.                 string strhtml = soso.getHtml(url, "", true);
    3 h6 W) Y6 T' x! T$ ~+ p2 g
  8.                 if (strhtml != "error")
    - ?9 O; Z- s& v5 O; a
  9.                 {
    ' H/ T3 {1 l8 s+ M" t+ @* @
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");* h8 v% L" l# Q; n) q) Q) _
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ' `/ N" _# y0 v; W6 W, y
  12.                     foreach (Match m in mc)  Z8 r3 n4 C' O) [9 n2 q: c% q
  13.                     {) G7 f0 V- a( F' O
  14.                         Uri uri = new Uri(url);% F1 \/ I4 Y6 ?6 C* n4 ]
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    4 O$ Z! F! z) g- i" Y
  16.                         string fullUrl = "";
    3 {+ Z  R& A% q- S) j5 ?' D
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    2 l7 ]0 P8 m7 y
  18.                         {
    % r' L0 u/ s1 {. {9 U5 m
  19.                             fullUrl = m.Groups["url"].Value;5 C( K/ Q9 K" Y4 f! h
  20.                         }
    $ ^- M$ }& ~: K1 {
  21.                         else1 Z* _" N# M3 `5 V
  22.                         {+ R& i; `2 E0 B4 c
  23.                             fullUrl = thisUri.ToString();
    / ?. k" I# m( u; k+ {8 a
  24.                         }
    " W# k9 N" |, w/ \0 V% v
  25.                         allHref.Add(fullUrl);. }$ R$ @4 R. n+ V" `* O; m! P
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);5 E4 ?+ G* {. [
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    * Y+ k% r. `. S
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ( w$ ^' k/ k/ Y- F, {/ f
  29.                         //Console.WriteLine("…………………………………………");! ]8 @- [2 M! j7 R" d* B
  30.                     }2 Z! W( i1 Q, n& F) w% V; L1 v# [
  31.                 }
    ; j; V$ r- d0 F6 s) w
  32.             }
    $ x, l! ]' C4 y2 [/ S
  33.             catch (Exception ex)2 Q+ q( A; w3 j
  34.             { }
    * Q  g3 g9 K) i5 ?, g% m- a' N3 v
  35.             return allHref;
    ! _# H6 }# a6 w% }* K  y6 x
  36.         }0 O" k2 h, x" F
  37.         #endregion
复制代码

! d; y* ]* Y1 H' H+ L; I  p2 d5 f1 n0 H7 K

  1. , F% z4 C( y4 t

  2. . ]6 b- @6 N6 b1 v' l

  3. ; T* t3 T% \( [! W0 R! G1 b
  4. #region 数据去重; H* i$ L# ]5 s: f' b
  5.         /// <summary>
    . ]1 L3 i4 O3 Y1 z4 t* V
  6.         /// List<string>去重
    3 C  |" n  n' f1 o; R
  7.         /// </summary>
    / |) t4 U5 C& g* i2 {3 c( G
  8.         /// <param name="list"></param>
    / c/ j% \" z) {% d; s2 v3 y& [
  9.         /// <returns></returns>
      k0 e0 X6 ^9 L# B
  10.         public static List<string> getUnqueList(List<string> list)! ~' Q* {& d, ~: n8 `  _/ q
  11.         {
    ( P1 p( h7 y8 e/ o6 Z
  12.             List<string> list1 = new List<string>();0 K3 g' m4 _# e  S  O% ?
  13.             Hashtable hash = new Hashtable();
    ! M* w8 U4 [) \3 E( o
  14.             foreach (string s in list)
    % N* u( s1 _+ V1 T
  15.             {+ Z; n5 P3 A/ a) e
  16.                 if (!hash.ContainsKey(s))
    : h7 F& `+ w% A; t/ C; u6 @' S
  17.                 {$ S# D8 C" R  h/ C5 V2 O
  18.                     hash.Add(s, s);$ `, H6 q8 z5 M3 k, i
  19.                     list1.Add(s);
    & R, V. F7 h0 L: i# m; c
  20.                 }
    ' i& J  G7 Q% O4 S8 t" B
  21.             }
    , b0 ~# @3 G) }7 X1 a
  22.             hash.Clear();
    & ?1 `% ~& `3 X" F1 e
  23.             hash = null;
    9 g9 T. b1 p% F
  24.             return list1;6 {+ Y" x3 m: \+ y
  25.         }
    2 ~$ J. h' H  h
  26.         #endregion
复制代码
6 P) o* }7 M0 Q+ i: I

; i0 {. v/ v4 S1 E2 ?

点评

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

使用道具 举报

36

主题

203

广告币

287

积分

初级会员

Rank: 2

积分
287
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
: B0 p3 j; c- E! X2 s
十分感谢!!!非常感谢!!

点评

缺少一个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 U- W, a4 k6 v  Z! h1 v7 f十分感谢!!!非常感谢!!

% B! }- @* P3 I缺少一个gethtml,用下面这个:
4 t/ ]: K. q/ {2 \% z9 w
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 + Y6 V. l% Q! Y; I- p& g1 \% P7 x
  2.         {- i9 m) w4 ~$ a% u
  3.             string strWebData = "error";
    ) _: f" S' Q2 |2 d
  4.             try
    - D8 q) m- O  ~+ {" a1 f. U( U
  5.             {
    9 o1 w( b" n- E" q8 ]
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    / E7 z- a$ }! O& Y% u/ M+ F
  7.                 // 需要注意的: 6 Y) j3 ?% {( i* J
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 % B; X9 ?2 j% o- q+ m
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    0 I3 A. t! Z/ O
  10.                 // webclient.Headers.Add("Cookie", cookie); . ?- s) a$ ~( |' R9 k
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    9 Y) m! U( o' N- m; m" S) F) ~
  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)");
    : n+ Y- B' a. r. I2 g; y6 V# U
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    2 G* ], Z( I; c! ^
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ' A7 \7 j- _* R4 i, w2 d0 ~
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;( R& a9 ~; Q; S% `1 S4 `
  16.                 //如果服务器要验证用户名,密码 4 \7 h& G) O) ]" w, o
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); % S; F. |! u9 I. V
  18.                 //myWebClient.Credentials = mycred;
    ; i1 l9 O% ^1 m2 C' N% J& @
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ) ]$ N$ ]5 y( h' t9 R
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);* ^) D6 H- N2 a! g( J2 h, U
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);5 b- ^) `, D, o5 F: x, e, h" S$ _
  22. 2 E  G4 v6 d3 T8 m: ]* N
  23.                 //获取网页字符编码描述信息
    : m, J1 x, ?: q
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    3 e+ w9 l6 U7 V
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    9 D# p' N  Q9 f, d: ?' ~  s
  26.                 if (charSet == null || charSet == "")
    ! C/ z# L: S9 {3 C. f# n" Z
  27.                     charSet = webCharSet;
    & [% I7 J; w$ _# l- L. |4 P+ F
  28.                 if (charSet.Length > 0)
    4 E$ q+ A0 E$ C: w/ K
  29.                 {
    6 }* H& j  c' c- M
  30.                     charSet = charSet.Replace(""", "");
      w( v9 S6 Q; P) M/ j6 d4 v
  31.                 }" F$ N: |4 R0 H# l: X: J1 Z
  32.                 if (UseUTF8CharSet)
      C/ i, A: X( @0 i4 g' j
  33.                 {
    5 w1 H4 V1 |2 s0 g5 M8 k5 `; x
  34.                     if (charSet == null || charSet.Length == 0)
    : f; K  X2 I! i; E9 \! u2 A* z
  35.                     {
    ) ~1 T. D6 C5 ^7 h7 {- Z' _; ~
  36.                         charSet = "utf-8";
    ! k# c" w7 \$ k: o* t3 q, r
  37.                     }
    7 B5 C5 S' U8 ~% n- P; {4 {, F1 ?( ^
  38.                 }0 X4 [4 [  d  w2 `
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)( m1 e& P0 ^6 l$ t" w
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);% }6 _8 _. }1 |
  41. 5 l5 `! a4 |( A1 L8 O% S
  42.             }& x) e. P- D7 |* r% ?
  43.             catch (Exception)
    9 ?1 j0 b7 N$ v0 g7 B( K5 ~2 }
  44.             {/ L( v, A) l, a% Y. I
  45.                 strWebData = "error";0 w9 V* T3 E/ E# g, a6 ]! {9 ?
  46.             }1 S$ {: X/ x2 a; z/ x0 g
  47. % i* w; u) O6 X
  48.             return strWebData;( G6 ]6 p. j/ [- T
  49.         }
复制代码
) D/ R  ?/ a$ S4 E) v' x2 g

/ Q' q5 K9 X( N  {: u3 {. O8 A
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-19 14:40 , Processed in 0.058067 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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