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/条双ISPFB海外户、GG老户、TK加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9860|回复: 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 抓取全站链接
    # p9 T1 b2 G8 p+ G; T3 Y! s+ X$ t
  2.         public static List<string> GetAllHref(string url)
    3 D' G* e$ Y9 H2 O
  3.         {
      P- |+ e$ Y( X) j( v
  4.             List<string> allHref = new List<string>();
    9 ]" I! i- A6 f: ^* w4 E; M1 I
  5.             try3 }) N1 l8 f( M/ S  C2 T5 a; b1 i6 ~# R
  6.             {  T! _, P5 v; h% s
  7.                 string strhtml = soso.getHtml(url, "", true);' P1 k3 @) _$ Y9 l
  8.                 if (strhtml != "error")0 B2 }: o! _) L! O
  9.                 {
    * x) B  Z* y; y9 m/ V
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ! O. V  i6 X4 A$ l
  11.                     MatchCollection mc = reg.Matches(strhtml);* I1 [- ~) X( P/ P
  12.                     foreach (Match m in mc)/ @+ o! p. m0 a- Y
  13.                     {
    & R9 G2 w  e! ^1 m2 X0 i3 @
  14.                         Uri uri = new Uri(url);
    ) |2 r5 B" }4 o& l. \6 ~
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    1 o, h, W) l+ D
  16.                         string fullUrl = "";; C& h7 Z6 k$ \9 n
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    , d% {- [6 b. c$ [$ @
  18.                         {/ y3 U+ j  M" b. e: U3 H5 B
  19.                             fullUrl = m.Groups["url"].Value;
      W, Q/ O$ ?( N2 T/ k
  20.                         }& _+ w, \0 Y; d0 Z# h. q5 L0 J
  21.                         else
    1 w0 y1 j$ S: z. q
  22.                         {
    # t) D# p9 L+ e5 R- ]
  23.                             fullUrl = thisUri.ToString();
    9 u- c6 k" g/ J6 n5 @
  24.                         }7 C0 [8 g( m$ t0 H- ^
  25.                         allHref.Add(fullUrl);
    & r. ]% T  N. M& C& E6 Z- x
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);: A+ a8 Q6 }, T9 p( C' Q  S
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);. m3 z: k" u3 {% X
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    8 z9 C7 ]4 k% |+ I0 h+ X. P* G* ?
  29.                         //Console.WriteLine("…………………………………………");
    6 e# k8 w2 O+ i( V6 ?# j
  30.                     }7 E" R- \4 p, q* X
  31.                 }
    ; E2 v4 j3 M. p, q" c$ F( f& f6 t- F
  32.             }2 E& n: w# W: j2 w5 W( R9 X% N
  33.             catch (Exception ex)
    7 F( L- j& ?3 e5 K1 B& M  h, {
  34.             { }
    - h3 n) j2 M! R) J- K
  35.             return allHref;
    9 D! D$ T9 {* F
  36.         }
    & O/ N6 b; U8 H
  37.         #endregion
复制代码
* H4 Y7 A# h: B

: l. G$ w% T2 ], O# O

  1. 4 h9 Q: V) \6 Y5 M; H

  2. 5 D! N- L: c+ k

  3. 8 d& D* C" `8 c8 @5 B
  4. #region 数据去重* i8 \+ D7 `; D8 E6 ^( K+ ~- |
  5.         /// <summary>
    4 G# @# N& e- N  K( c, d( ~3 F( X; d1 I
  6.         /// List<string>去重: a9 v0 v& ~: Q- U' y5 Q
  7.         /// </summary>
    * ]( |0 T6 t& f/ E2 y
  8.         /// <param name="list"></param>
    ) \3 I) V9 n9 O1 s  `7 m
  9.         /// <returns></returns>$ L7 @* f9 m6 j' H: N/ o* q- R
  10.         public static List<string> getUnqueList(List<string> list)/ v4 n6 E  a! @& L' {6 Q
  11.         {
      {5 {9 c5 @! k7 M8 t. E% C, L
  12.             List<string> list1 = new List<string>();4 W6 f3 a$ h0 J
  13.             Hashtable hash = new Hashtable();
    : o! s8 c( H$ j
  14.             foreach (string s in list)8 g7 b. N6 ~, s1 W! l: U9 \; _
  15.             {
    ! \8 }$ C. F2 P* W
  16.                 if (!hash.ContainsKey(s))
    4 o4 j2 d: L$ M/ Z- {0 h
  17.                 {' H) A1 j  O4 a/ ^+ |( M$ N- w
  18.                     hash.Add(s, s);
    " t1 I! t$ a( \$ T1 ^5 h0 t
  19.                     list1.Add(s);
    ( n# M6 L" a2 B2 Q$ J+ u8 i$ O% u
  20.                 }1 l* \' d- E" I" w
  21.             }
    & U: c+ S% S3 @: c
  22.             hash.Clear();- x. v& e3 X- p. e  `
  23.             hash = null;2 `7 i; _8 w# O! g: O
  24.             return list1;
    % b- z4 U% g3 I4 y
  25.         }, y0 J  M% n( n6 b
  26.         #endregion
复制代码

( K1 n  l( K+ h$ b- D4 m) {" Y' V2 N7 T: m& H

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
# C; {% Q& C5 {) K1 U
十分感谢!!!非常感谢!!

点评

缺少一个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
9 K4 I" m2 _, q' b8 D6 ~, R0 C十分感谢!!!非常感谢!!

5 Q" \( Y; X- r& f) L- v: O$ P缺少一个gethtml,用下面这个:% q, o: `5 m) K; F
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 ( ?4 c7 X7 E6 a8 Y9 X* I" }
  2.         {- K8 A0 _' U" }3 z, x. T2 \7 _
  3.             string strWebData = "error";
    . ?) c1 a- N. `* t) R
  4.             try( G; ~/ B+ j4 D* s, S6 r0 f
  5.             {: l( Y) V. N3 B* ]( I' {
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient - u" K7 }) ?8 N: Z3 h( v( q
  7.                 // 需要注意的:
    2 `! W6 V& `( f6 Y1 Z
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    7 x* |: N& {9 s( W( W, x
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    + n3 [6 m) U+ n# x/ B1 k+ o
  10.                 // webclient.Headers.Add("Cookie", cookie); 4 }/ |1 W  ~, s- {
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    5 k& X, ^1 y2 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)");0 U9 y6 M9 b% f* D& }5 V; q* u
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ; q% o& H- Q3 V  s, @4 ?& Q8 H" b
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    2 S* T7 M/ ~7 g% l, g  X; @
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;% Z& P5 _) W: R# Z  I
  16.                 //如果服务器要验证用户名,密码
    % s( X/ Y1 B. H+ J
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    3 h* \/ h. I: ~
  18.                 //myWebClient.Credentials = mycred; 0 j# H. A2 U, F* H1 Q
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ) D2 ~9 A: V* N, F
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ' O; e: k5 V" o$ d& x
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);  T% b4 W- Z7 @/ |" R
  22. $ R- m1 l5 C$ W0 X: J  |
  23.                 //获取网页字符编码描述信息
    ( R! Y+ p$ U' j0 M
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
      K  _7 g% n0 y2 E0 c. p5 {5 ?
  25.                 string webCharSet = charSetMatch.Groups[2].Value;$ d5 H) C' y; C. Q8 b0 U
  26.                 if (charSet == null || charSet == "")
    2 s* ^/ ^, e4 X0 ]% u/ F9 ]
  27.                     charSet = webCharSet;  q# f* {' z3 g$ K5 T
  28.                 if (charSet.Length > 0)6 C' u% }9 T# B7 s& U: `* g
  29.                 {
    & M: H6 C, ~' Y* m
  30.                     charSet = charSet.Replace(""", "");
    9 J' k8 R& A5 D8 N4 `9 n
  31.                 }
    4 }( @8 Z" y( [& E* X
  32.                 if (UseUTF8CharSet)
    + A/ W+ q# }. W7 F: z
  33.                 {
    ! `" A& |& b: V1 C4 {( V+ b
  34.                     if (charSet == null || charSet.Length == 0)
      N( {6 ^" G0 J
  35.                     {
    4 N: k; K* l! d: f; }& a
  36.                         charSet = "utf-8";, e5 `% E; @$ c! K/ _- V; R
  37.                     }) T- M( L8 Q: H2 \8 h
  38.                 }6 S5 [9 u4 _# @5 a  g# p7 p
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    2 ^* }3 Q9 n! J1 s
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    % ^( M2 @: J6 P6 ?
  41. # y) B( m' u' f0 m) j6 m
  42.             }% a* z/ q( B, W4 z$ u" ~( N0 V
  43.             catch (Exception), C9 C' E# l! h9 G; C, n
  44.             {3 ^7 f9 i0 F8 d, w$ s# k
  45.                 strWebData = "error";
    " t, k8 I7 t0 X4 l: @/ b
  46.             }
    3 a4 Z; k$ Z. |

  47. - p1 @7 Z0 {2 u0 o5 i& \
  48.             return strWebData;% V" R" ^* M6 h$ n
  49.         }
复制代码
  P2 P% ~. l* `/ O. j: d  z
# E; V  k# n, V/ F; |. V
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-13 01:58 , Processed in 0.060753 second(s), 22 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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