AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
⚡️AdsPower:安全不封号,高效自动化Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️跨境债务催收/风险代理
FB企业户海外户,授信户,TK加白户广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9985|回复: 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 抓取全站链接/ n8 _3 [" T. @5 @" W  e, `+ M
  2.         public static List<string> GetAllHref(string url)( S3 P3 ]# y- I& P. g: f/ Q4 {
  3.         {& k4 a5 t3 R% `5 u
  4.             List<string> allHref = new List<string>();
    4 r5 x" \$ v* ~1 h  d) A9 \' @2 _
  5.             try$ U- @, y. @, |- }$ b0 x, h
  6.             {
    4 S0 x, f2 J+ u) }  H( @: r, M
  7.                 string strhtml = soso.getHtml(url, "", true);
    1 E4 x( q. ~/ n  p# B
  8.                 if (strhtml != "error")
    : p% t- f+ _; Q2 e
  9.                 {! ]4 o$ C/ g& Z6 M0 f9 E, t' \
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    8 ^  c. X) g6 N  U! _+ J$ ?! R' @& K
  11.                     MatchCollection mc = reg.Matches(strhtml);7 x* }' z, B" g7 g7 y
  12.                     foreach (Match m in mc). R3 v9 F- J* g! C+ Q/ G
  13.                     {. B7 H" Q' r5 X6 C2 H4 r2 p$ a
  14.                         Uri uri = new Uri(url);  O/ w8 M$ J8 B/ x# Q2 K0 e: t
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);# F6 S% Q; _3 q, }) }
  16.                         string fullUrl = "";
    5 b% U6 G" w1 p/ d! R, u" @
  17.                         if (m.Groups["url"].Value.StartsWith("http")); C4 {- J- Y/ e) T2 G
  18.                         {
    " D% ?1 ^" N: P/ c/ o
  19.                             fullUrl = m.Groups["url"].Value;& B" [* ?+ x$ X2 t( a
  20.                         }
    & i! f" T6 z# k. O; L9 F2 ~
  21.                         else6 E6 i2 _9 J3 U3 ]$ n
  22.                         {  b( x$ U5 y3 @7 r. f1 m
  23.                             fullUrl = thisUri.ToString();
    / F6 f7 X- k" @8 z+ i( ]
  24.                         }0 v9 J+ P5 Q5 O& E
  25.                         allHref.Add(fullUrl);
    - j/ s& c& j$ G- i3 Z6 z+ @
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);8 K& e8 A2 `" l) k; N
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    9 V4 y, s% F7 x# H
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    , R2 F8 x! x0 z( Z
  29.                         //Console.WriteLine("…………………………………………");5 E! V& e) M1 P4 Q* ?
  30.                     }+ g3 t% z' Z4 t$ S5 a8 S9 A- j
  31.                 }
      ?$ Z! h* z" {2 N# m  g0 k3 ]  e
  32.             }
    * G6 `. @. X2 L! K9 F! _
  33.             catch (Exception ex). w- i0 s( A2 [' q8 T" V
  34.             { }
    , E4 `; X& y; [
  35.             return allHref;$ F$ t6 l4 ~: h$ C1 t
  36.         }
    2 U( K* w$ l/ U
  37.         #endregion
复制代码
. C0 w7 y% _: R; u# A& n  F

5 [5 A1 i- j2 x' n) q* P# A5 Z4 {& p

  1. 0 P. R& R6 G) n

  2. 4 b/ y2 _$ `3 M

  3. $ q$ T# y4 {! w- d- @
  4. #region 数据去重
    : ]& k9 S1 C) ?  B  R
  5.         /// <summary>! M9 \" _) V* q2 L1 O& y( [
  6.         /// List<string>去重1 d7 i" W, V$ h! o
  7.         /// </summary>
    " n% a( I1 k, d$ y7 y
  8.         /// <param name="list"></param>
    + p; `4 R2 r2 C; Q
  9.         /// <returns></returns>5 q& X" \5 f2 h3 M5 M! c
  10.         public static List<string> getUnqueList(List<string> list)3 @7 p" s9 Y4 X3 p- C8 [
  11.         {8 h! t* f; I; B3 i+ H
  12.             List<string> list1 = new List<string>();
    ; k: y" L: v' e. H8 E) y2 \+ S+ `9 y
  13.             Hashtable hash = new Hashtable();7 S. C" Y8 q& z0 l0 R
  14.             foreach (string s in list)2 o0 T5 [  O8 \
  15.             {4 v. u5 u4 i3 ]; Q. n! z9 |
  16.                 if (!hash.ContainsKey(s))
    9 Q% O3 i* S4 v+ \9 p7 N' b  `
  17.                 {  X+ a/ T" I, y( A
  18.                     hash.Add(s, s);
    4 V% g# N4 B- V2 p# x: R
  19.                     list1.Add(s);  t# t" J' ?/ j
  20.                 }
    1 R9 s7 n: {6 t
  21.             }2 _: i( Z8 x  i8 g; `
  22.             hash.Clear();
    ; ^0 o9 r3 W2 p* O7 l% G# c# g
  23.             hash = null;
    , k+ T3 @3 s. |7 N/ o; `
  24.             return list1;
    % x+ M' ?) p- L; {- I
  25.         }
    $ L0 i# A1 i$ E8 X  }; s3 k
  26.         #endregion
复制代码
" p0 j1 b) [) g0 {  v* ]

6 ^7 u) [3 ]4 b2 L

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
" F+ [2 m( ~/ y9 i9 [
十分感谢!!!非常感谢!!

点评

缺少一个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
  o. ~( U# o/ V7 O' P0 ^十分感谢!!!非常感谢!!

/ h+ G* S# s* N( q, P缺少一个gethtml,用下面这个:
2 k# n/ m! N+ ~" `* A
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    2 n& k- U- g8 x
  2.         {3 K- Q( b) S+ I8 N+ Q
  3.             string strWebData = "error";, B, n$ W) V& q$ v4 I0 T
  4.             try
    & z4 P2 Q, _, N% N5 L
  5.             {
    % }$ o$ O& \; \" `
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    6 ?+ R& j  ?6 ~0 L
  7.                 // 需要注意的: 8 f( `2 L( U- K) l6 m. E% d
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 8 t7 m8 A' H) q- X: S
  9.                 //这是就要具体问题具体分析比如在头部加入cookie , p+ b7 J/ I) C8 s5 A1 t+ _$ W
  10.                 // webclient.Headers.Add("Cookie", cookie);
    5 U( L# o$ Z' Z+ y3 y7 M' F- \
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ' n) u4 [* E- F; R4 l4 I+ c8 ]( 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)");
    0 R  r: h: S  U9 w
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    1 k4 j% M7 Z5 X; j& [0 z& ~- W
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 $ h# }" l# c1 B8 ]% t/ x
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;5 D$ X8 P' Z& e6 r$ o0 \1 o
  16.                 //如果服务器要验证用户名,密码 * N. L; y: H8 S1 B& h' z
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ) x* O8 R* E3 B  g
  18.                 //myWebClient.Credentials = mycred;
    7 m# [: Y, b5 B& K9 F7 E7 g8 @
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 2 O- X0 Z5 B1 ^$ Y5 H; f
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);; e$ O: I, t6 I, H  m- Z
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);1 U3 b0 t$ y: V5 D+ a. x' a7 _$ O+ o
  22. * v8 i9 J  G( Y, H9 ^9 l0 k
  23.                 //获取网页字符编码描述信息 4 q8 v" Q7 d" q5 [2 n3 Z3 s- }
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);/ d: a* U/ u2 Y, o
  25.                 string webCharSet = charSetMatch.Groups[2].Value;9 z/ g- [0 n6 g6 u
  26.                 if (charSet == null || charSet == "")( @/ `7 }2 }) e5 f: @- M
  27.                     charSet = webCharSet;& K7 [5 h7 D3 ?' O" [- P, b2 }% v: m
  28.                 if (charSet.Length > 0)
    + C; _# Y( Z2 y4 a
  29.                 {
    ( W4 p2 q4 S$ k4 V" L, N" C, e
  30.                     charSet = charSet.Replace(""", "");* q1 l; O' i5 a' t& _0 p2 F
  31.                 }
    / L. }4 F6 s& [: F3 D6 F
  32.                 if (UseUTF8CharSet)
    / k1 q* n" N+ m0 l4 b5 _; [
  33.                 {- ?( G4 Y, J* Y' h; B4 y1 a
  34.                     if (charSet == null || charSet.Length == 0)
    ; T3 h4 S! O# ~
  35.                     {
    ! k8 Z5 z  {  o* M2 L$ l
  36.                         charSet = "utf-8";
    + `  y0 {0 u/ E) k. `
  37.                     }
    1 X& @  R) p6 I' e
  38.                 }
    $ t: b; o' T3 I. [) J, H
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    " ?# |! A3 ~; Q4 J: p  n1 A
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    $ D" |* P- n! N  v0 k. D

  41. + O8 X/ U# N# @2 Y$ t
  42.             }) @( r) a# e0 p! p
  43.             catch (Exception)
    2 d% W. C6 ^, t. p' |& ~
  44.             {
    - P' h% K/ s0 K1 n: j# s- F
  45.                 strWebData = "error";
    2 s* p# G' M( @: |3 u) S
  46.             }
    1 c+ h: R# ]; H8 y

  47. 8 H( x6 n6 W# `1 l! C
  48.             return strWebData;2 m$ z' H7 C6 u( B1 |# M
  49.         }
复制代码

, L7 \. f1 f3 y9 O3 I! e
3 D" Q+ w; D& M% f- w  M& v
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-19 16:08 , Processed in 0.052761 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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