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%,国内持牌机构   
查看: 9926|回复: 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 抓取全站链接
    * `$ }" o9 L0 w" b- G
  2.         public static List<string> GetAllHref(string url); b- U0 T; r$ S+ j" Q1 w3 U
  3.         {$ p9 R" t6 z, d) E! R! B
  4.             List<string> allHref = new List<string>();& e9 l5 X  l; S. E: L6 g
  5.             try
    ! ^: ~& ?+ J) E3 n2 l: p
  6.             {. ?& r, z' e! `9 R7 C) A
  7.                 string strhtml = soso.getHtml(url, "", true);
    + C" \2 g6 N" v- c
  8.                 if (strhtml != "error")
    ) y1 n- k9 a. @. d6 Q
  9.                 {' ]! x1 P7 l+ D5 g& `1 w
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    . U5 B3 S+ N2 I5 I% w
  11.                     MatchCollection mc = reg.Matches(strhtml);( T8 C) q- Z  d3 m) n6 \/ D
  12.                     foreach (Match m in mc): Y, q7 M9 q: v! I) V  l6 n
  13.                     {  A* }3 ~+ T  E3 |# M( N
  14.                         Uri uri = new Uri(url);8 [; b' E0 c% ^
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    , G( ~7 H- t  c- l0 I
  16.                         string fullUrl = "";4 Q$ N( I4 D% E% R
  17.                         if (m.Groups["url"].Value.StartsWith("http")); W* c: C) l  k
  18.                         {
    + D3 G4 I3 Z. A0 d
  19.                             fullUrl = m.Groups["url"].Value;: P$ E6 y0 ?0 Z. B3 K# r# r
  20.                         }
    2 }1 u# M$ m5 A  L9 G
  21.                         else
    , J( d; s4 U' |- P
  22.                         {
    * T' J( ^7 K+ a6 Y7 M$ R
  23.                             fullUrl = thisUri.ToString();
    ) \0 {* g6 N9 ]: z4 ]/ [; o5 H
  24.                         }
    # E; n" r: y- d+ @9 G9 l4 m: z
  25.                         allHref.Add(fullUrl);) t9 q$ t3 i9 \0 Y2 }
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    # t2 ?5 J% J' d
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    4 q% K, w% b, K: O, s% r2 I4 p
  28.                         //Console.WriteLine("补全链接:" + fullUrl);3 m& P0 E) j' A! d& T* p
  29.                         //Console.WriteLine("…………………………………………");
    2 a# @1 s4 ]2 V3 o+ \
  30.                     }1 P5 S1 v) q( o- p# k4 ~' {' _. E
  31.                 }
    % ^/ z$ A5 t3 J' f; X
  32.             }
    5 ?/ ]1 D3 u9 j& I. D
  33.             catch (Exception ex)3 v, R" g0 S' R" n1 B( J- h  w
  34.             { }
    1 ~) H  z6 n. U$ Y, g! o: E
  35.             return allHref;( k/ v# k$ Y) ~& a0 j+ N: H
  36.         }& i% U. y; K' n+ K5 v
  37.         #endregion
复制代码

# q2 `# y2 z' N
/ V' W4 T6 m- Y

  1. 5 i8 {* q* p' R* A# y* ^: j" S  w" V% f  P

  2. / U+ U1 d* A3 }5 U* N; K+ `1 L

  3. 9 n, x7 P) E* o+ W, u  L
  4. #region 数据去重
      U; U4 r, a+ c- l. Z$ \# X8 t6 J$ P
  5.         /// <summary>
    / F% Q: n: L/ R
  6.         /// List<string>去重: s; c+ x' V5 ~; H7 @( U
  7.         /// </summary>$ B# O3 z" j) n. l% p
  8.         /// <param name="list"></param>
      a/ q7 ?% K; ^. W. C' R! `8 C5 ~  b
  9.         /// <returns></returns>
    1 V  T) f# P1 M
  10.         public static List<string> getUnqueList(List<string> list). Z  e. z/ A9 ~; o2 n
  11.         {
    3 c! i+ T' @; M" L
  12.             List<string> list1 = new List<string>();
    " }+ i# R2 A, N% ]. w( ^4 Y
  13.             Hashtable hash = new Hashtable();& F8 @  o* o$ t8 P) ?
  14.             foreach (string s in list)* R8 g% X8 V9 G( O6 d, x+ u
  15.             {
    + v; F8 ^( Q4 H3 }& d
  16.                 if (!hash.ContainsKey(s))7 _' |  k( w6 x  b0 {
  17.                 {. @9 i: C: ]1 l
  18.                     hash.Add(s, s);" P2 n3 c6 |& g8 d0 s) J
  19.                     list1.Add(s);- o$ y2 U$ K, Z' m; s- v
  20.                 }
    " o: ^  h# D5 R7 T. u
  21.             }; Z/ n3 h5 u# D9 d8 Q
  22.             hash.Clear();  [$ f9 f  X2 P1 Q* G6 Z
  23.             hash = null;1 {& F1 V1 t" T( p8 E4 q2 D+ Z" m2 b
  24.             return list1;
    6 l" ?, q4 Z: M- J3 @% y2 y
  25.         }
    . K' j$ `2 i+ K6 T4 Y9 f
  26.         #endregion
复制代码

. {' F/ E# v1 O8 x4 x- D% `" t# i2 k% B4 O& b

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
6 {$ y# t) s/ {! e5 u2 b
十分感谢!!!非常感谢!!

点评

缺少一个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
5 ~, c- \* i6 B! Q十分感谢!!!非常感谢!!

. y5 h5 [, t7 T3 x9 W) y缺少一个gethtml,用下面这个:; r' Y' V2 [. i
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    $ d: r/ K2 m% C' M  l  S
  2.         {* b5 [$ B& d9 \; F$ B4 i& E0 X5 }
  3.             string strWebData = "error";
    4 x: z) k. n) y* u. i1 Z4 I3 _
  4.             try5 m! }5 _! Z1 }2 Y
  5.             {
    7 Q2 A; A6 `' L) |$ n) _2 _4 k' t
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 4 |# b5 E& ~: Q
  7.                 // 需要注意的: ) B8 M" X. P! Q
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 % W1 \1 t7 h/ w  O7 H
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    1 ~7 \9 U; e; t
  10.                 // webclient.Headers.Add("Cookie", cookie); 7 Y9 e1 D0 v5 L% S3 W4 ]
  11.                 //这样可能需要一些重载方法。根据需要写就可以了- O9 C1 f. D5 Y7 J
  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)");  P4 ?3 O" `1 D8 l0 x
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ( \" Q2 S# u% K5 q& {$ f
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    . @! S5 ]9 y! T  J5 I  l7 t1 N
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ( x- g; |, u7 i, j* d
  16.                 //如果服务器要验证用户名,密码 , X( Z3 z# R7 {8 c1 w) p: U0 o
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    4 E" u3 x/ V" ~0 q/ _, L/ I: b5 c
  18.                 //myWebClient.Credentials = mycred;
    % k# @- H# \. g/ s
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ( L8 O* i2 l% N" O9 v5 J
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    7 G) {; Q- `. K& `$ S! W1 D
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);. d5 X" j3 e) P: N  c& j8 I

  22. + r. Q9 j: a2 ~4 G1 \
  23.                 //获取网页字符编码描述信息
    8 l: @( q% g* k
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);$ o! g0 C* h' n# i- `
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ! l! Z" V: B* U& |! e* `( }% Q
  26.                 if (charSet == null || charSet == "")7 {3 ^6 T6 c1 ~! B( v9 l2 X& ^9 v
  27.                     charSet = webCharSet;
    ) f/ r) o4 j' @& G1 D
  28.                 if (charSet.Length > 0)
    % d) ?0 h( l+ }5 D) M9 R
  29.                 {
    9 t; I! s9 _8 y$ |: @: \! j' a
  30.                     charSet = charSet.Replace(""", "");5 e/ G0 g6 M1 P$ n. O% W
  31.                 }
    8 a& X6 q" U0 ^- [: U
  32.                 if (UseUTF8CharSet). M7 d! j: `; C
  33.                 {
    ( ^: ~. [5 p/ p6 W
  34.                     if (charSet == null || charSet.Length == 0)
    & j3 \4 _# ]  K& I" i
  35.                     {
    4 ]2 E' c" g8 K" N: r
  36.                         charSet = "utf-8";
      b$ p/ a) P. I( C1 K+ ^% f/ X
  37.                     }; z# z1 K& e. L  u- l. W/ ~3 R
  38.                 }
    9 g' p$ K6 K0 a& Q6 L
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    4 p; V+ Q, ^6 G+ `6 d3 B
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    & Z4 o7 j; T7 _" J  `# S2 v; D
  41. ( ]( B2 F) j. j5 Y( k
  42.             }3 }$ M4 V8 L( r- ^2 v. B
  43.             catch (Exception): G# y7 _7 R: W8 p9 F4 p2 A8 Q+ x
  44.             {' i9 H/ _9 B$ \7 `
  45.                 strWebData = "error";, q# X* z- m# ?( a
  46.             }
    / w  v2 ^" D* N) x, B

  47. ; m) h6 u# j& w9 N6 W
  48.             return strWebData;
    : N& f5 n3 q! W
  49.         }
复制代码
3 u  l9 ?4 e6 |3 ?+ O& @
5 p3 N8 C% v+ A4 v7 m8 u9 |! W  E
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

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

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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