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加白老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
最大欧洲Nutra网盟BA找量 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理FB企业户海外户,授信户,TK加白户Proxy4Free独家住宅IP池❤️免费测试
联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 10002|回复: 7

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

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    0 L$ \9 Q6 O5 e+ T8 @6 Q* |+ X) O/ O' q
  2.         public static List<string> GetAllHref(string url)' H# L0 Z- y/ y1 ?  z
  3.         {
    * Z- h% [0 l& `
  4.             List<string> allHref = new List<string>();9 r+ B! O  W5 E, x
  5.             try
    * e5 a# g# X) T8 F$ Q: R
  6.             {: [2 p2 |* C2 r. s3 P, z
  7.                 string strhtml = soso.getHtml(url, "", true);4 N& S1 h1 }% y3 [/ w; f/ j+ r: n
  8.                 if (strhtml != "error")  f& e/ ]7 }+ t* t+ f! B8 m6 |
  9.                 {
    + o+ ~+ A. _, C. s- m1 p* t
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    0 c3 c# y& M& c7 N! D
  11.                     MatchCollection mc = reg.Matches(strhtml);
    8 a+ e: n8 ]! P5 H! q
  12.                     foreach (Match m in mc)- z+ v+ n# d2 v% O& t
  13.                     {
    / ^7 i# _+ `. s9 q5 D
  14.                         Uri uri = new Uri(url);$ ?- X1 \- g: Z" E! ?. q( Q
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    $ x) Z) }& t: Z/ B
  16.                         string fullUrl = "";
    * p0 {* I7 Z+ |3 J4 M# W. T
  17.                         if (m.Groups["url"].Value.StartsWith("http")): c$ _, U/ r( u) r% A- F5 Y6 N  ~9 o
  18.                         {
    ; Z- p$ U: g" N2 ^% Q
  19.                             fullUrl = m.Groups["url"].Value;. P4 d' c. I) j5 F( {$ a! N
  20.                         }
    & H  q/ h! j5 U! f6 s" E6 f: A
  21.                         else
    % K0 E% N$ i& A& m
  22.                         {
    ' n: n% l5 J% m2 h! o
  23.                             fullUrl = thisUri.ToString();7 v% N( B! ^2 a+ ]( g0 K+ M- @; F
  24.                         }5 N3 H" c0 F9 y( \) p5 H5 ], w: t
  25.                         allHref.Add(fullUrl);
    ' |- o' }1 R& P. N. h
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);! J' c: L8 t) G) G  N- P6 e- l
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);" j$ N0 ]9 B. n" Y/ U; G: m
  28.                         //Console.WriteLine("补全链接:" + fullUrl);0 c. f) v* \2 T' S( z9 V
  29.                         //Console.WriteLine("…………………………………………");2 A4 Q! l$ [# u/ G) j3 @! v1 f
  30.                     }; y& ?9 y7 E2 j& R
  31.                 }
    ! w/ a8 w) y8 @# B! G6 E" B* V
  32.             }0 C" q( O4 ~8 N& ^* g5 N* `8 V
  33.             catch (Exception ex)8 K+ e* ?% L6 w. N& v% }. ~/ o
  34.             { }
    / k" |+ a# D- r3 }
  35.             return allHref;  M: [  H) B# s# c( }  `" J4 Q
  36.         }
    - n7 N& C4 W7 S) x1 e0 o/ P
  37.         #endregion
复制代码

: p9 i1 k3 F' v7 b4 i! e& L0 ~3 k( I2 x; n  i' G' O, l
  1. ( {; q; X# G5 B" n; S

  2. $ W% c# g) C. e7 Q9 v# r' w

  3. ( ^% J4 z, ]' t8 h. j
  4. #region 数据去重
    ! |& V4 t& a1 N( M( C- Y6 F  H
  5.         /// <summary>
    " e& X% n, H- J. d" d) H
  6.         /// List<string>去重
    % a+ |% ]. W# b% P' s6 s( W* z
  7.         /// </summary>1 R. p# p9 r9 y+ R' K( |* V: S
  8.         /// <param name="list"></param>2 n, E, k* e. t& z% u
  9.         /// <returns></returns>7 [7 O$ G& ]' r
  10.         public static List<string> getUnqueList(List<string> list)) X2 `7 L+ C! h3 z
  11.         {
    ( x. b2 H* q& X9 D! p
  12.             List<string> list1 = new List<string>();
    3 H+ g' F  r% b1 b# e
  13.             Hashtable hash = new Hashtable();
    : M9 q- M3 r; ]2 _, R( x: R2 C
  14.             foreach (string s in list)
    9 H: [; N' F- c
  15.             {
    : m( a* D; z! {; x( F" D
  16.                 if (!hash.ContainsKey(s))1 X/ R% {7 R) B& Z
  17.                 {" p! ^7 \2 b7 g; ^
  18.                     hash.Add(s, s);
    ! z1 w) a& }  O9 I/ P. X
  19.                     list1.Add(s);
    & b3 @/ E9 f2 G; F; k4 P
  20.                 }
    5 \4 U% {* e3 S' E( g1 n% l9 a
  21.             }' Z( V5 i5 k% h6 p4 f$ |+ W
  22.             hash.Clear();
    : E* l8 D7 Z+ K0 r- @" ~7 D9 w4 W
  23.             hash = null;
    8 @( O. z  s. X; G! S
  24.             return list1;
    # Y- d6 G  D2 S; I; d2 k
  25.         }
    / c; P% T4 t& O+ J; S/ L
  26.         #endregion
复制代码

3 [8 o: q% L7 ?7 D: B+ y
3 f/ q4 a3 z# X% B

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

+ d5 e: B; S; x十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20# x. U5 ~+ e; d* J# p& C4 ~& q
十分感谢!!!非常感谢!!

9 g0 c" w9 `! l缺少一个gethtml,用下面这个:% y0 C* f6 V- l1 D- I4 N
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 8 ?) Y" {) R4 }8 J- L
  2.         {# H, w7 U/ _& ]$ @- y
  3.             string strWebData = "error";
    - H- C) W! f: a5 B2 E
  4.             try, Y! o$ K' [( C9 R& s/ U4 b
  5.             {" E/ \  L7 a' G( J
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
      A5 W; A" z- m7 D" Q
  7.                 // 需要注意的: 7 d+ U, }, w  e- [' {, Z9 D
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 9 l4 M% {( P1 X7 B0 ]7 Z- b
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    % M/ v/ t2 {+ J' V* e7 }: R. N
  10.                 // webclient.Headers.Add("Cookie", cookie);
    + {. V) b9 V! U! K/ o
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    2 f  u" Q  i: {) a# e; O2 I" Y
  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)");
    , Q/ H" G- \- d4 w
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    , C+ ~1 a/ a; s' a  ?4 D; u1 i
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    9 \+ U, r# }! `8 X4 P; @
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;) }4 b1 y& [6 V
  16.                 //如果服务器要验证用户名,密码
    4 d" r! _8 F  @7 B2 G
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    % h3 W) z9 L6 {, p7 k- W6 Z
  18.                 //myWebClient.Credentials = mycred; $ w# A( }" v0 S  E3 f
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    3 H$ s* A  f% Z/ i0 e9 \
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);2 `+ q7 E, k4 \( G4 l
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ' U  x6 ~% W1 C7 E( S4 |( T2 F
  22. " `# ~5 @% [4 a
  23.                 //获取网页字符编码描述信息 9 y- A" O$ I3 H. `# l& `
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    & N8 t' c" X# M# M& P' Y" N4 I
  25.                 string webCharSet = charSetMatch.Groups[2].Value;2 _! ~5 i' U, W5 I' l
  26.                 if (charSet == null || charSet == "")* c' p, Z# u3 m$ p2 W: ]7 O
  27.                     charSet = webCharSet;  o+ ~' }+ r1 U; j
  28.                 if (charSet.Length > 0): [  [0 f. p, @5 y2 K
  29.                 {
    - \$ M8 R% v8 H
  30.                     charSet = charSet.Replace(""", "");0 d4 D( n+ n2 l
  31.                 }
    " n8 T) a4 `3 C, q8 ?5 g- W4 o4 O
  32.                 if (UseUTF8CharSet)" s- o& z3 N6 k
  33.                 {7 g! O7 n, H6 f
  34.                     if (charSet == null || charSet.Length == 0)
    ' z, u# U% J5 A
  35.                     {. @% g8 e2 r" t
  36.                         charSet = "utf-8";! m5 e: @5 H% |( x: L, J9 a" }
  37.                     }
    / x/ p" [5 N3 g( P  g
  38.                 }
    , Z4 t1 T* X* f, W, @4 {
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    9 x- k: A: `+ s  h
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    8 k- M+ G/ h( F1 L$ y% X4 x: C
  41. / T  z' Z. _2 j* a5 l
  42.             }
    : R! l, T" v! X4 s1 `1 `
  43.             catch (Exception)
    ! g+ C8 H* _1 |; s. G
  44.             {
    : w) h4 ~6 ?5 f- T
  45.                 strWebData = "error";! _% M3 r! z8 ?* C6 W& w( Z+ h! t
  46.             }. z$ A* u3 N$ e1 l

  47. / Q. \1 T* X2 }* C2 C% e3 M
  48.             return strWebData;! B: h: x  k% v; L# e* R! \
  49.         }
复制代码
9 q( {2 J. `+ ?2 f3 O$ k

) j# H, ~' u6 {; g1 g: v  C* {
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-30 04:43 , Processed in 0.052309 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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