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户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️Proxy4Free独家住宅IP池❤️免费测试联盟收款/海外资金下发/服贸结汇
域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 10021|回复: 7

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

[复制链接]

36

主题

211

广告币

295

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接9 H% r8 H" v; R, k+ q( K7 v, h+ F
  2.         public static List<string> GetAllHref(string url)
    / d: r0 Z0 ^% g, C6 A- }* o
  3.         {
    / X1 e' l0 x% x3 \
  4.             List<string> allHref = new List<string>();" b% `( z2 O' x7 z6 I$ L
  5.             try
    ; }# I6 e" P" }4 k
  6.             {8 C% _. C& X! b) e' S' X
  7.                 string strhtml = soso.getHtml(url, "", true);! u# J0 }5 [$ `& Z3 B! f5 o; Z) B
  8.                 if (strhtml != "error")6 x: a% n( C4 \, k1 {- K
  9.                 {8 q* t2 r4 p4 @+ h* d; j0 w
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");- B8 m0 ]& O6 {' U; R% I
  11.                     MatchCollection mc = reg.Matches(strhtml);
    & L& Z; w9 C" B5 I: }- g- ?! p1 N
  12.                     foreach (Match m in mc)
    ; D3 L' k# k; f# X  O
  13.                     {" J7 ^0 z: C: D4 A- Q: C/ q' O
  14.                         Uri uri = new Uri(url);! J! Y- n; Q: K4 {4 c
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    . n! U; \% M% y
  16.                         string fullUrl = "";
    . _3 v, _- h$ X" R2 G& _( P! w+ ?
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    4 S! M3 z) d& g0 o! l
  18.                         {- x9 g, }) m  [8 m; V
  19.                             fullUrl = m.Groups["url"].Value;4 c) u3 n+ g9 A: Y
  20.                         }- L" u  t, I& q" u
  21.                         else
    , h2 a; F, r3 O; {/ i8 q
  22.                         {" o: N5 d, G1 A7 w1 i, z2 @! N% l
  23.                             fullUrl = thisUri.ToString();1 y- n* N  G5 x
  24.                         }
    2 P; m' D  b0 j+ q
  25.                         allHref.Add(fullUrl);4 t& F# F; r& T3 o9 D( U3 {* b8 q
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);- [! E6 y0 w5 x2 W' _% D
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
      J1 Y- }( T! X) [
  28.                         //Console.WriteLine("补全链接:" + fullUrl);* q' A8 t4 h. [" z$ P2 L; r
  29.                         //Console.WriteLine("…………………………………………");2 a9 `: }% W) b8 F% H
  30.                     }1 |% W6 I5 P5 D: ]% r- R
  31.                 }
      L/ N) c& Y: p0 j3 W6 v1 x
  32.             }
    - ?8 X4 T/ x0 I8 T, @
  33.             catch (Exception ex)
    4 C' l* M7 F; `7 H! O3 Z& `' U
  34.             { }1 D2 e) x& k* ]3 y% i! g# [
  35.             return allHref;6 U+ y, T3 J% J- h3 Q) g' n. D! N
  36.         }7 K. ?+ Y; X' s  X
  37.         #endregion
复制代码
' u6 O4 \4 C2 a5 ~
8 R: V- t4 }! x2 l2 l
  1. " ^+ y( w/ Z% j- D9 ^/ I

  2. / j' D. s) ]/ `

  3. % e$ |5 t- b( m# z
  4. #region 数据去重
    * h" c  U* N( v9 U, W" m6 {" v
  5.         /// <summary>
    * S+ B& p1 ]0 \- ]: T, Z1 e+ R
  6.         /// List<string>去重0 g7 _$ j8 v. E. @" s2 L" W6 k
  7.         /// </summary>
    9 Y  i  R/ |6 Y& _5 c) L/ t
  8.         /// <param name="list"></param>4 A* M$ J" l' r: }" v2 K
  9.         /// <returns></returns>
    ( k0 Y7 `2 x6 ~, `  z
  10.         public static List<string> getUnqueList(List<string> list)
    / H3 S/ X; |% j4 j! t; V
  11.         {
    ' h& L; e+ ]$ t3 g2 L/ @
  12.             List<string> list1 = new List<string>();0 Z5 s: ~  a6 v) G1 ]* p
  13.             Hashtable hash = new Hashtable();
    , |4 ?3 P: O. o% m
  14.             foreach (string s in list)0 f, j1 I7 s! Y8 q/ x6 ^" \! q4 N8 ~
  15.             {8 v0 |* N' Z9 c' s( r" v
  16.                 if (!hash.ContainsKey(s))
    : d; M3 e4 Q6 _- z% U% b; K2 q
  17.                 {
    ! y7 G$ k  P! c) C7 o
  18.                     hash.Add(s, s);$ B: g4 o: o( v7 x0 i
  19.                     list1.Add(s);
      h5 h9 M( c$ ?' a) G
  20.                 }
    % x: g% w7 t, h0 j& B+ u
  21.             }
    / t! i  J& I7 c9 G) J  r; F2 i
  22.             hash.Clear();
    . d& M  p6 ]. E: M, r4 g
  23.             hash = null;
    & z0 }# X6 l  ^" B
  24.             return list1;
    4 d" g; c) L; L; K
  25.         }  ^; B: Q4 D' @8 F; g
  26.         #endregion
复制代码

4 C5 {" N4 y; S; X7 H$ P0 _. q3 U" p# e. q( U4 A4 w

点评

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

使用道具 举报

36

主题

211

广告币

295

积分

初级会员

Rank: 2

积分
295
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
* T* N( C" ]5 J# g2 ~  |9 h
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1478

广告币

1821

积分

高级会员

Rank: 4

积分
1821

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20' W2 S5 I9 u! q! X
十分感谢!!!非常感谢!!
" Y1 r0 V9 X& b. a' r
缺少一个gethtml,用下面这个:
. |1 w6 z% m" C
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    : C; x1 B. f0 A9 \; X( S2 {. v
  2.         {
    0 i. D" t7 F4 Z' F. `+ ^9 Q8 `! p
  3.             string strWebData = "error";
    + y3 B1 m- w7 F9 Z6 h4 j
  4.             try' j& [2 _  I7 O1 B7 V2 \7 ]
  5.             {
    " C1 @+ m! y5 m& p+ G
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
      \" f, V' Q  A) K+ O4 b3 x8 q
  7.                 // 需要注意的:
    9 L7 M8 M+ z0 P/ C* B. q
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    " r: k' ?* h+ c6 h# r- J9 I
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 3 x/ k1 G2 n  f/ {
  10.                 // webclient.Headers.Add("Cookie", cookie);
    $ d3 L0 o" f. E* U4 A( B; U5 h( {
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    % ^. h; `0 r. `8 k6 b5 U  o
  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)");
    5 l7 N* w8 v  H, ?
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ( G& ?( X, o# C) j+ P0 g4 t. M: Y; z
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 # r# _, h* o3 }; s- T0 A% |  b) h
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;. T" f2 i' B5 N2 L& i) q
  16.                 //如果服务器要验证用户名,密码
    7 R! H- M' ]0 E! T
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    ) M6 u3 g/ Z2 O  a# H
  18.                 //myWebClient.Credentials = mycred;
    ' B9 k* O2 _" ^/ N$ {/ Y0 r
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    7 p* C- ]; G: u
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);& @# E/ M7 a9 T3 y/ M) F
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);% {4 Z7 l& e) d5 j8 f/ |  `% E

  22. 6 |2 U( `6 d7 A2 t2 a
  23.                 //获取网页字符编码描述信息 ( f3 R; |$ f- f- F/ c' l' S
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    4 s9 g, s' U$ |* o
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    # L. x+ |: Z1 |1 c$ `$ e" x
  26.                 if (charSet == null || charSet == "")
    % ]) T4 s4 Y9 V: I7 o: n+ N5 A
  27.                     charSet = webCharSet;
    : V: Y# n: P; ]( Q
  28.                 if (charSet.Length > 0)8 |% g/ i  P& a( E. C
  29.                 {
    , P* a, R8 H, y) k% D
  30.                     charSet = charSet.Replace(""", "");
    : L( `1 D2 f2 P1 r% K+ w$ Q. `
  31.                 }6 A5 D2 B& N/ V8 v, a- _
  32.                 if (UseUTF8CharSet). y+ v) p2 h1 W8 j+ T% C# r
  33.                 {
    9 e/ R& t) k- V4 F( ~" v# ^
  34.                     if (charSet == null || charSet.Length == 0), m$ w! G) P3 `8 w: X4 R
  35.                     {' `) x! H# [! K" N2 [
  36.                         charSet = "utf-8";' V$ z" }! V( G
  37.                     }
    1 s& h1 y- [4 N
  38.                 }
    ) v  }" A" l& A  e+ p+ K6 D
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 F% v3 W( C  ]: B4 t
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ( `; [& Y5 R+ t* w* u
  41. / G& i) n- `" L6 v) K' O
  42.             }7 O5 M2 D( r( n! `8 l
  43.             catch (Exception)" k6 V4 Z/ q" ]1 I3 L- _3 K
  44.             {8 i  J! d5 o4 E+ N# A
  45.                 strWebData = "error";
    5 O5 O5 J  \5 O
  46.             }
    ! f  w+ U6 `" a$ s3 p/ I
  47. ) i( G7 {- E& i. W4 b
  48.             return strWebData;7 D9 v3 o( c. q# G0 v
  49.         }
复制代码
( Q6 S) H1 n3 k' ?" T  g5 y8 F
/ l- v$ [% |6 Y) k: Z5 j! K3 Y
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-12 02:01 , Processed in 0.053778 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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