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企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9809|回复: 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 抓取全站链接% H% }7 M& N. l: U) ~
  2.         public static List<string> GetAllHref(string url)8 J& E: ?9 Q2 {; K$ @' |7 i
  3.         {
    1 R+ O7 D( J4 x# M8 z( E
  4.             List<string> allHref = new List<string>();/ T4 U2 o8 N6 M, _; u9 Z
  5.             try
    9 O1 s: g$ m7 J2 U8 W
  6.             {
    8 ?8 Z& x& G+ q- C
  7.                 string strhtml = soso.getHtml(url, "", true);
    + }- N5 S8 E, d' G4 D5 f
  8.                 if (strhtml != "error")
    7 o9 |0 K* y, w4 m+ _
  9.                 {
    - k( ^7 @$ |5 h2 p0 C
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    " r) t! k/ D9 |# G! l
  11.                     MatchCollection mc = reg.Matches(strhtml);8 N& h5 w; w6 _! h5 k4 i/ V% S. M" f
  12.                     foreach (Match m in mc)
    ( z! L0 M6 h6 \# u5 j8 x/ X
  13.                     {8 k. d- B, e4 y; D( i  E) u; U
  14.                         Uri uri = new Uri(url);- {9 A( ]1 [, y
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);8 v; N2 K( r3 _- F+ ^/ |, R
  16.                         string fullUrl = "";
    . j* d9 R9 O* n- e# [8 d. G3 s8 x
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    . E, A  V% D* S; z, m" ~6 s
  18.                         {  n5 |2 u" Q9 k7 R1 v3 @
  19.                             fullUrl = m.Groups["url"].Value;9 F, m! t7 W" A
  20.                         }$ [2 N  X7 m) @5 g
  21.                         else. N$ B$ O* E! W; |5 E8 C
  22.                         {+ N/ s9 w3 s  ]# H5 z; C6 j5 W
  23.                             fullUrl = thisUri.ToString();1 V) u7 W$ ^, t" V; H. l6 j
  24.                         }/ o2 G! b2 ^* ?' a
  25.                         allHref.Add(fullUrl);
    ; G' h! p: D& c( r, {! G
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    3 }" m9 o; [0 [7 G
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);" [. z- R* S8 u) d
  28.                         //Console.WriteLine("补全链接:" + fullUrl);: j; B  z) W( E! m
  29.                         //Console.WriteLine("…………………………………………");2 @; w! m2 U. P
  30.                     }8 f% o1 h! {: k) m3 c! J. S
  31.                 }5 D4 M- C( f8 C9 E% n2 \
  32.             }
    ) H6 g) z7 N" E
  33.             catch (Exception ex)
    / Q8 E0 b, d" B8 E; d: `0 ^
  34.             { }
    6 c5 W. F' l: r/ g, ^* o* r+ B# o
  35.             return allHref;! m) W& f: M6 e- M* n: Q7 _7 O
  36.         }
    + }( E# a$ p  x- f
  37.         #endregion
复制代码

  O' b5 [5 B; G' m9 J
3 d1 t4 D: H& w2 h

  1. 2 i' m$ F6 a& K6 N
  2. + |" @  D- b) t

  3. ) d. c. ~4 H7 k4 y, j1 j" V
  4. #region 数据去重
      K9 \( {  `, e2 u2 `, Y
  5.         /// <summary>: ^) t3 u( c, N& V3 }$ ^1 m
  6.         /// List<string>去重
    6 C6 S: p9 r/ a9 H" Z2 ]/ O
  7.         /// </summary>
    3 c5 e7 f* ?. l& D. o
  8.         /// <param name="list"></param>& Z1 [( l2 @7 k5 T  ~% T$ ^
  9.         /// <returns></returns>
    % Y- P' l. Y6 g3 y) c3 d5 R. {
  10.         public static List<string> getUnqueList(List<string> list)& a% o( U5 J+ L" k
  11.         {& ?0 ?! s$ u7 u) N% U6 Y
  12.             List<string> list1 = new List<string>();0 t* T+ L9 t! }* U9 w6 Y6 a* @
  13.             Hashtable hash = new Hashtable();! C# `5 n/ s  L; b* N' q
  14.             foreach (string s in list)
    0 n+ P" N, O* g- ?; \' d9 Y
  15.             {
    " {  |( x1 D/ y2 V
  16.                 if (!hash.ContainsKey(s))0 s' {) {! B8 y& c. {* F3 x
  17.                 {1 G* K! V  E6 v) a
  18.                     hash.Add(s, s);& ~+ Q) w+ k# p
  19.                     list1.Add(s);2 z4 Y! z0 X: }' B: `& |4 [* K
  20.                 }
    5 l, V4 w5 E+ r' I
  21.             }# h- w, p- |  W/ a
  22.             hash.Clear();$ u1 l. c% s8 L& N0 b
  23.             hash = null;
    / Z1 E$ K! @8 s9 v3 k& m" k* [
  24.             return list1;  G' F5 e* v2 q, s
  25.         }
    ' M$ d1 U" f; r) O8 {
  26.         #endregion
复制代码
, @9 B( `5 h2 U5 o% K

# \& Y: d4 H7 Z  x+ ~2 \

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
- Q& b! Z! n6 ^! P9 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/ r2 g' [- q  j' r6 k
十分感谢!!!非常感谢!!
: r2 V" \  R& g1 v8 T9 M
缺少一个gethtml,用下面这个:
7 d) y. q: P+ }/ _& x
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    ' V3 }: w' ]( E3 f9 `
  2.         {0 X& s3 v- E' J3 \& D) n8 v  n
  3.             string strWebData = "error";+ J0 k; H/ B) g* X- r/ @4 B# F) r
  4.             try
    4 K6 X( C0 E- F' F4 A+ o
  5.             {* W) Y6 w' n; D: y4 ^1 }
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    6 W- `: j" h* [: n9 [( J
  7.                 // 需要注意的:
    # Z! `" u9 ^, S2 U" Y
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 # \! N: U) s, ~; q. Q; I- A6 Y# Q6 |
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ( t2 {- ^  Q# {; @0 b- {9 c4 r
  10.                 // webclient.Headers.Add("Cookie", cookie);
    # v1 s6 W7 H4 L9 ]
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ( J; p, k3 r! P2 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)");
    + ?# u$ |+ u$ x& `, ?* m" u
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");' g3 F9 w$ U; `3 J/ r! K4 }
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
      }5 v3 g5 i* l" L, |
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    " L& z" t6 F8 ?* y+ i. a8 J0 @% n
  16.                 //如果服务器要验证用户名,密码
    ' J: ?. S5 i. v: ?; S
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); $ V9 u: ^+ p' S& H) I8 J& Z
  18.                 //myWebClient.Credentials = mycred;
    ( H! s. }5 o- v' [- N/ K
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    4 A* r6 l0 Q. a+ a& [, ~6 `
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    0 H6 }9 S: P9 `3 _7 j
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ' N( p& J9 Y' ~! c3 T+ d

  22. , K6 |* P* ?# B" b; o  f/ |/ U
  23.                 //获取网页字符编码描述信息 ' e0 Q& B' \. ~( H0 H
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);1 v3 K/ Q6 x6 \5 i
  25.                 string webCharSet = charSetMatch.Groups[2].Value;, ]" Z4 L1 X" k( L" e1 l5 M8 I/ F
  26.                 if (charSet == null || charSet == "")$ ^7 L5 ~' e# p) I4 G( G7 l
  27.                     charSet = webCharSet;
    . C3 z8 F3 }4 t# j4 T+ P0 _/ s+ i
  28.                 if (charSet.Length > 0)
    % d! u. g1 X4 D' s* Z2 @; U. Z7 Y7 @
  29.                 {
    5 h0 C, Z/ r! i# R2 V: f% _, U
  30.                     charSet = charSet.Replace(""", "");
    8 R+ l) K2 q& n! N: I
  31.                 }
    7 J. V/ Y( r: P) [7 ?9 h# C! U
  32.                 if (UseUTF8CharSet)
    & F3 W0 T6 T4 b5 U/ N
  33.                 {
    $ e  ]# l0 n! W  v. I
  34.                     if (charSet == null || charSet.Length == 0)
    6 z% g( H& ~# K) I% ^' p
  35.                     {
    : z: k2 `, H. H, R
  36.                         charSet = "utf-8";! V  ^( K3 w1 Z
  37.                     }
    ( F8 k7 F% G- F8 I! M  _
  38.                 }
    * H* r  t: P8 g  S* q& H
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)) d# H+ \; [6 V8 ]1 G3 k) r/ i1 [
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);3 i( B% F9 N2 @* h8 ?

  41. 9 z- F& X3 v1 J. k
  42.             }4 b; H% b2 E; e" ?4 s
  43.             catch (Exception)
    4 J  ^6 y6 l& x. Y& a
  44.             {
    - r; o( Y6 R  K' ?4 t) n
  45.                 strWebData = "error";. Y( `7 P9 R2 C! j$ ]7 i
  46.             }& y& Z. D# w" P% V3 m
  47. $ ]) M/ y- S& O, w# K( @
  48.             return strWebData;
    / R& x8 G2 a2 @& P  ^% p. P
  49.         }
复制代码
! \# l, |: N. Y* w
  N. Z  `* t2 z: Z
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 11:13 , Processed in 0.051734 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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