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提供TK企业新户老户、谷歌新户老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9802|回复: 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 抓取全站链接8 r; p# g3 i% Z3 Z- |
  2.         public static List<string> GetAllHref(string url)% l. G* E6 U: ~! i9 R* ~: M
  3.         {
      w" s5 ?! B2 j+ L
  4.             List<string> allHref = new List<string>();
    * G0 Y# g1 L1 x2 z
  5.             try4 Y* y0 {/ H( K4 l4 x% L( ~' c
  6.             {  O; P; w" m, a
  7.                 string strhtml = soso.getHtml(url, "", true);1 v2 n, V) V' k$ p! E$ ?. w
  8.                 if (strhtml != "error")) w  V' d" @7 l4 L# s3 o  b
  9.                 {
    $ \( N+ L8 ]0 C$ @) P
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");% a+ K1 M/ R4 f7 I6 b7 b
  11.                     MatchCollection mc = reg.Matches(strhtml);
    : ?) Z- O- [% {/ o( H! c! S
  12.                     foreach (Match m in mc)
    9 d' b0 j! D% E, M$ U& Q. W
  13.                     {# S$ s+ p5 A4 N+ Q& O6 x
  14.                         Uri uri = new Uri(url);  p0 ^9 X: d* b5 h. N5 h; s, b8 V
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);2 p) `3 L+ B: Z& Q) n- d3 w
  16.                         string fullUrl = "";) L# Z% R8 Q& @) I9 M* O1 [
  17.                         if (m.Groups["url"].Value.StartsWith("http")); d( N( L$ R4 x6 R' w
  18.                         {
    . _0 Q  w/ F9 [9 x1 t
  19.                             fullUrl = m.Groups["url"].Value;
    5 ?5 D5 b3 ?. F) T
  20.                         }
    2 A- u5 d, G& W6 f
  21.                         else$ \0 N3 V7 f$ ?# m0 w0 [' o
  22.                         {
    " Y$ |8 E( C, `8 U
  23.                             fullUrl = thisUri.ToString();9 B, Y; b- }- [( q, L! Q
  24.                         }1 D2 V  ?% O5 d
  25.                         allHref.Add(fullUrl);0 {  T: y9 O3 b: P! P! l* Y
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);4 m1 B1 u0 K" |# c, c# S' C) [8 `4 y! X
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    * m& v% F) m% o) m9 k; z& F) D* W. O
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    + B" \' a' h- G' G
  29.                         //Console.WriteLine("…………………………………………");: V3 F- R! n7 r4 J. T& w- ~* ?7 _3 C
  30.                     }3 o- P$ }3 I: s" F2 g. I
  31.                 }7 v. A/ z0 S8 B; e+ h
  32.             }2 M9 B5 T2 `2 J' U  u8 k% F  [
  33.             catch (Exception ex)
    : c. j1 q, r6 g7 q
  34.             { }
    3 z& D7 z  ]# [. T' b# z
  35.             return allHref;
    % K7 P9 P4 W9 P3 W5 c) L
  36.         }4 }9 y$ e$ i9 N( `8 t
  37.         #endregion
复制代码

/ `, r* p* @1 r5 l7 \7 `  y' t" T; {
9 l" u! I( c) B+ }* ^5 N

  1. ' p% t/ q" B9 ?* |. q: r
  2. 6 m: h5 ]; a0 a: `
  3. $ j& @7 N# q' |6 K
  4. #region 数据去重/ j; r* U3 A) @
  5.         /// <summary>! W; \  Z8 i4 h) x6 g# d) a# E
  6.         /// List<string>去重( L) o: \8 I+ K
  7.         /// </summary>
    $ u7 V1 ^8 b; K& L
  8.         /// <param name="list"></param>
    1 Y2 C2 Q- Z* p- O
  9.         /// <returns></returns>4 T" j3 v" _* i3 i5 ?- R
  10.         public static List<string> getUnqueList(List<string> list)
    ' X  O& X. z. a- q, E
  11.         {; M: G1 L; t8 q5 f2 z- Y
  12.             List<string> list1 = new List<string>();
      e* P2 y; G' T* k; I2 e" D
  13.             Hashtable hash = new Hashtable();9 e# g* f: r+ ~: [# D
  14.             foreach (string s in list); C0 u- ]' L2 o( f7 B0 ?1 F0 [
  15.             {
    + S0 S! s2 ~) ~
  16.                 if (!hash.ContainsKey(s))
    2 H0 _, [8 Q! N, |
  17.                 {! }. G1 V. S0 Y: `. u) ?( g
  18.                     hash.Add(s, s);
    & B( F2 s$ z9 O6 z" x: H
  19.                     list1.Add(s);
    4 p6 u7 B/ `- I7 @" B2 q. y' ^. h
  20.                 }
    # p7 R/ y6 y$ v6 T7 E( ^# G
  21.             }2 a4 `6 [( S* M0 U
  22.             hash.Clear();
    & u$ k: W2 v. Z$ u& }! C
  23.             hash = null;
    3 E6 E: X7 {3 w" m/ D
  24.             return list1;
    2 n. a: `! e. ]+ K) s
  25.         }
    . B" P1 a8 y! O) ^
  26.         #endregion
复制代码

% a8 N1 c4 o( Q# [3 j' }
7 O. T% y4 m. N; F# c# i

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

& S, T8 [! l* }+ \# \. @  ~5 U' C十分感谢!!!非常感谢!!

点评

缺少一个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. x; B+ _: o2 _& f* d! X7 `6 z: S6 E
十分感谢!!!非常感谢!!
, W+ a) }( M! h3 [; V
缺少一个gethtml,用下面这个:; z: T; F8 C4 D* o; x
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    . Z  K' X  u' Z+ Z6 W  \
  2.         {# {; S& ~: j6 Z2 e- N
  3.             string strWebData = "error";1 ~! A* i( H3 j. `1 h
  4.             try
    , _6 _" f9 ~" b
  5.             {
    " n' B6 u) Z- R9 n% p* |
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    - C! u. m+ `9 Q: R
  7.                 // 需要注意的: 5 g  E  {1 f: q) t
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 0 x" G# ^: @  q' m- R
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    + p% L1 ]) n7 M8 l& X
  10.                 // webclient.Headers.Add("Cookie", cookie); % ?. O# Z. P4 p
  11.                 //这样可能需要一些重载方法。根据需要写就可以了/ J2 L- N7 A" F* c5 E) @" _" E
  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)");
    4 ~: P! s3 s# r4 n; K$ q3 S/ T
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ' \# ?& e* V' C. }
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ( B5 g9 l. D6 n# Q+ A- T8 H
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;& o7 P' b: W$ L
  16.                 //如果服务器要验证用户名,密码
    ( B, p0 m/ B  f6 V" n
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);   e% s8 g$ f1 b2 l3 J
  18.                 //myWebClient.Credentials = mycred; : `+ R8 r# J8 P
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 5 D) z6 M2 C( e& a
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    5 \) F: e8 k4 i2 b& z& t
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);" I) ]2 A! p8 S/ S

  22. 1 `1 v5 N2 K% T3 @" U
  23.                 //获取网页字符编码描述信息   r3 W0 g/ V6 Y# ^, l
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    % j: }8 o* l( X7 u. R8 n
  25.                 string webCharSet = charSetMatch.Groups[2].Value;! H" J9 c) Y% ]/ X1 M' [
  26.                 if (charSet == null || charSet == "")
    # O3 |. g* \( E' \
  27.                     charSet = webCharSet;3 F: v& T' e5 F% E  [
  28.                 if (charSet.Length > 0). Q; d% R( }$ Y! Y' e9 n
  29.                 {
    ! N7 W$ w$ k$ H: ?0 N2 _
  30.                     charSet = charSet.Replace(""", "");
    9 |3 b# H' v2 q
  31.                 }
    / Z' _! |. B5 T* W& V. P
  32.                 if (UseUTF8CharSet)
    3 a2 n. h5 g3 S; J! [
  33.                 {
    % \( B' W& g! M! B/ u
  34.                     if (charSet == null || charSet.Length == 0)
    % }# g* M8 [9 x% A6 h
  35.                     {
    . H( [% {7 h9 K  m+ Y
  36.                         charSet = "utf-8";- _4 \/ g  w+ r/ \2 a5 c9 N6 q
  37.                     }5 Q( C# H9 h) q; K
  38.                 }
      a4 ]% H  \$ \
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default), P1 b( [8 X* i9 s  w
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);* ~! y* D- K6 ]* F) V0 z6 M. L* c, O

  41.   A5 v% |5 N* A8 c
  42.             }
    ! X( ^* m0 u- a) Q1 ?; t- D5 h
  43.             catch (Exception)
    9 H8 `2 P- P" l( B8 Z
  44.             {
    & m% X! j' I: e% j5 J8 q* _
  45.                 strWebData = "error";
    : k  {3 C( y  x1 |5 B& A2 S) u8 O
  46.             }. }: q- K3 _4 b% @* N1 ^

  47. . C7 W) T9 z4 |1 M
  48.             return strWebData;
    ; l$ V  H$ N* w
  49.         }
复制代码

8 O1 M! n# C1 c0 ~3 ~/ ~% i$ P
- Q  [: O! b( n- _( s: p( p% _/ K
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-1 17:52 , Processed in 0.047933 second(s), 14 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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