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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9780|回复: 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 抓取全站链接/ K& X0 d& v/ R" W- I9 [
  2.         public static List<string> GetAllHref(string url)
    . C. Y, M, B; f
  3.         {
    ( ~) o9 e! E8 m' u
  4.             List<string> allHref = new List<string>();; E/ ]& {% g  @, [# G& i$ r2 H5 h
  5.             try
    4 S1 A: K' m; g  C1 F; q
  6.             {4 l+ \. W, G5 q0 |+ m  s
  7.                 string strhtml = soso.getHtml(url, "", true);/ y! h" j9 R$ z5 D, Q  e& K
  8.                 if (strhtml != "error")
    0 f% w. O3 Z( h# t% L5 Q1 l
  9.                 {
    2 `$ d! F& V& L6 E# _
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");, P8 Q" y+ h3 y0 P' G2 K
  11.                     MatchCollection mc = reg.Matches(strhtml);
    - A0 }/ J, ~- {
  12.                     foreach (Match m in mc)7 q& j6 o# J2 Z
  13.                     {* \+ _3 m6 r$ K0 a
  14.                         Uri uri = new Uri(url);
    3 I% a6 W( K" w/ d+ L% L( d7 s
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    - a1 ]; D2 \, S4 ~" V, {+ T2 Z
  16.                         string fullUrl = "";$ G; ]/ z' ^) Q' Y1 Z6 l
  17.                         if (m.Groups["url"].Value.StartsWith("http"))! X- M2 d5 b& _/ E/ [  b. `
  18.                         {
    5 v+ O; R5 ~! ]; l1 B: o
  19.                             fullUrl = m.Groups["url"].Value;& D8 l3 q  L$ N
  20.                         }6 c+ D/ H9 O( m# A
  21.                         else
    6 ]0 S1 S0 F7 Y* W. Y
  22.                         {9 y2 p2 ?. _7 b3 L" y4 `4 K7 l
  23.                             fullUrl = thisUri.ToString();1 D* R: N: G% G, i2 _. w  [2 I
  24.                         }; A/ L4 K, ]. c) Y
  25.                         allHref.Add(fullUrl);
    4 I  Q, N) Q5 b3 |
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    $ ^# ~& x$ i! O; I7 T
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);  O" o) a* j) @: t) T
  28.                         //Console.WriteLine("补全链接:" + fullUrl);2 ], K! g! [, g, z" V7 x
  29.                         //Console.WriteLine("…………………………………………");
    9 g/ {( S5 G. n2 A0 {
  30.                     }
    ; o9 q+ |: ?# C
  31.                 }
    $ L7 D- m' a7 P1 w
  32.             }
    $ X7 u7 J2 a9 O' x
  33.             catch (Exception ex)' J1 E1 q  w1 U# s' ^
  34.             { }
    $ M3 I0 w1 r' o0 L; \. l
  35.             return allHref;1 q; e& ?1 V/ w
  36.         }
    8 m  W& a% ^9 d9 ], a- R* G
  37.         #endregion
复制代码

8 r- N! z) B5 p# E  ^7 u, ]; Q2 @3 ^9 D5 ^: x! H' A
  1. 8 a0 Z& v- z5 o! j' }, B
  2. / j6 i) C7 s2 t! W

  3. 9 H! P1 W. B% t4 j
  4. #region 数据去重
    7 S3 O# _- t5 k5 E
  5.         /// <summary>
    # y6 {0 z, n7 N
  6.         /// List<string>去重
    + X- G; ?$ Q' |0 M
  7.         /// </summary>
    : ?1 T* V3 t, \+ V+ H- ], f3 f
  8.         /// <param name="list"></param>
    # ^% j) j5 k1 k7 y- B) o
  9.         /// <returns></returns>
      i4 l. |6 t4 n
  10.         public static List<string> getUnqueList(List<string> list)
    - t1 C$ N/ m% B4 Q
  11.         {
    : ~8 ^+ y8 K4 o% V3 J+ A5 K# T5 `
  12.             List<string> list1 = new List<string>();
    / [- T1 ^7 F/ S) A/ d& b
  13.             Hashtable hash = new Hashtable();) U# K- h$ q% S' n" w
  14.             foreach (string s in list)( o# a6 V7 J" C+ |5 h7 C1 T7 {
  15.             {
    7 o/ O! n3 E4 o3 M
  16.                 if (!hash.ContainsKey(s))* N5 |: x' P' r6 o- D4 k( a: o
  17.                 {: \; Y2 m$ \) h% t' }/ _
  18.                     hash.Add(s, s);2 e9 X; J7 s9 C( L- ?" s
  19.                     list1.Add(s);3 Y0 J& r2 ^4 [! T3 s; |2 p
  20.                 }
    0 Z% m4 i, o9 i4 `6 T. B) x
  21.             }
    $ O/ z2 q4 b6 k
  22.             hash.Clear();9 j  s% [. Y9 N3 q  ]+ J8 |
  23.             hash = null;
    $ V9 z! l: P+ p. T
  24.             return list1;
    * Q$ O2 R8 T( l
  25.         }# v( ?3 U  [( n, G; M  y& R
  26.         #endregion
复制代码

+ z+ \/ e% e; s! w/ J9 A
2 a7 \, e! Y' B! F# G! W# |, g

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

4 q% I& Y% ?5 C' \* ]# v十分感谢!!!非常感谢!!

点评

缺少一个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
  O6 M$ |4 G( t1 V十分感谢!!!非常感谢!!
. w8 k1 p# y* J$ D+ h8 G+ T% H- G
缺少一个gethtml,用下面这个:# i% v4 `; H  y6 T9 c, x3 w# y) P: g
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 4 l5 L& ?& ^  P' q8 N
  2.         {
    ! D$ N6 ]  \& S. `) j+ y
  3.             string strWebData = "error";  }$ h: M1 |5 Q6 V( t
  4.             try4 e! T1 z% D' U1 X
  5.             {
    ' W* t4 U; R2 J. o$ v
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    4 Q3 ^* N' c$ n
  7.                 // 需要注意的: ' z+ D6 E6 G# K: x6 }  l# [
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    0 g/ P/ v0 C0 z
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    / z6 n: t; w% e0 n
  10.                 // webclient.Headers.Add("Cookie", cookie); : J/ A4 |. A( d( M$ ^$ a; y
  11.                 //这样可能需要一些重载方法。根据需要写就可以了3 x0 [, }  R; C; i9 z9 X
  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)");
    2 f9 m+ e, o- V. g' ^/ U' D1 A
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");+ W$ V9 o3 x# K
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 % `+ t) C8 W2 E; i7 D
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    0 T1 R" v4 `2 @, U( E) h
  16.                 //如果服务器要验证用户名,密码
    4 y5 A- I' H+ I) y  ^& H% O
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    2 A) J3 a4 v" w, [9 t
  18.                 //myWebClient.Credentials = mycred; * E6 t9 `" h- z4 _9 j
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    3 ]# o, M; O! @3 [( l
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    & ^, S* V9 z# N* ]+ Q- Q
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    + @  ~0 G2 N) }  ?, D- L
  22. 6 o, {0 P5 R" \# _' o5 F3 B
  23.                 //获取网页字符编码描述信息 : Y" U! Y3 c: A
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);2 L& s+ `9 j3 g! I
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    " c3 o  t$ S' }: y4 r' Q
  26.                 if (charSet == null || charSet == "")$ C9 W& U) f) d0 B/ i
  27.                     charSet = webCharSet;+ H: ]1 f2 c9 |9 [/ J) Q
  28.                 if (charSet.Length > 0)
    9 Q) G% q7 b; [: m
  29.                 {
    3 G4 ], b* e3 @' F! [6 }# k1 m
  30.                     charSet = charSet.Replace(""", "");: L! ~' a1 Y6 G( M) {( c
  31.                 }6 H- N4 m: z' G0 O5 G
  32.                 if (UseUTF8CharSet); w- {* [9 y4 d2 `/ i3 _. B7 U
  33.                 {
    $ u) q, M2 s8 _8 T! h
  34.                     if (charSet == null || charSet.Length == 0)
    3 t  v  b8 J- M6 h9 q4 ]
  35.                     {8 ^9 O" C1 X! N- y$ V) S
  36.                         charSet = "utf-8";
    1 J( D. f$ Y% A8 s
  37.                     }
    4 H9 k7 W* D( [7 e
  38.                 }9 I# F, z& N$ [+ }: o8 B
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)0 }6 i* B& n5 {, v* |( p' `' V
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);2 D; J6 A  z* [8 O5 M* H1 S

  41. " W' Z+ V5 X3 V
  42.             }- {2 }6 V& }  \5 u" f6 a; ^% g$ E( C
  43.             catch (Exception)" L! `$ O2 `1 a: t$ G
  44.             {: Z& Q+ i! t% w0 F
  45.                 strWebData = "error";$ d; P3 f# h9 [/ j% g- t% R+ X
  46.             }" q6 A- M0 c/ A
  47. $ ~* }2 W; T: j! ?* h6 I
  48.             return strWebData;; q& Y& H9 C; [
  49.         }
复制代码
$ |/ M6 j5 R! g7 }! ?% [
7 F# x* |4 t$ s8 ^
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 06:32 , Processed in 0.056427 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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