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%,国内持牌机构  
查看: 9782|回复: 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 抓取全站链接* z* y9 c$ V( A) f2 x
  2.         public static List<string> GetAllHref(string url)
    5 n8 R* U3 G$ X* S
  3.         {8 y, M; n& p7 E" R
  4.             List<string> allHref = new List<string>();
    ' V( j$ v0 n5 v, P4 L
  5.             try
    , o% o2 k: I2 y5 b* Z
  6.             {4 j; ]; r" j( \# Q6 d; U4 \) a
  7.                 string strhtml = soso.getHtml(url, "", true);; y" j: y% A& R/ o9 D* Q7 w
  8.                 if (strhtml != "error")1 _; T) R2 y1 V8 b4 E) b
  9.                 {
    : `6 e9 i1 c5 Q& d- j( k' a5 S
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    . X1 W5 g6 }: C3 v
  11.                     MatchCollection mc = reg.Matches(strhtml);
    / B  D4 v, n( [: G
  12.                     foreach (Match m in mc)3 I0 T' [: X: \
  13.                     {
    2 I2 ~9 b% X+ d9 s
  14.                         Uri uri = new Uri(url);0 u* ]0 i. s  \5 K6 W' g
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    & p3 m# \2 W, d$ r" E0 N
  16.                         string fullUrl = "";
    - _& U1 }) \" V& A. I1 ^' |
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    7 B  f5 ?$ T/ v' m$ t5 T6 J. z7 |
  18.                         {( ]9 u' M  p0 y( I7 o
  19.                             fullUrl = m.Groups["url"].Value;
    5 ~' H' E  ~9 z5 ^' B2 R. ^
  20.                         }
    5 `- {5 B, g1 s8 t6 G
  21.                         else
    : h) A: [% N8 P$ D  d
  22.                         {8 @0 N- Z5 ]$ o2 c5 h5 t9 M
  23.                             fullUrl = thisUri.ToString();/ G4 ]0 M' T/ v  [) |
  24.                         }  ~! R( o3 c9 H
  25.                         allHref.Add(fullUrl);3 X/ x. n% }8 @2 T
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    / O! U* o' M6 J$ S
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);9 K1 r# X6 m$ O7 v1 Q5 N2 v
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    & d/ _4 T4 z- O( ^( s
  29.                         //Console.WriteLine("…………………………………………");4 N& ~3 j% ~( W. N5 j- M8 u9 g
  30.                     }; H4 d4 x6 D! T5 i2 |9 d+ j
  31.                 }8 }' Q( o# W. x3 |; K
  32.             }- g3 [: J+ B8 q, p% T
  33.             catch (Exception ex)
    : Z3 l. H% m$ b; S; d/ v
  34.             { }2 J- W9 D; r( n  V, `# G8 w
  35.             return allHref;& V& G- }3 _* U4 q6 j
  36.         }; c. T* V, U* A' |6 g
  37.         #endregion
复制代码
8 ?  F4 R* h5 N! L) ~9 c$ W
1 J- v4 ~# Y# I( N. A
  1. 3 x( R' K( Q2 H. L7 M
  2. . _. S9 T- I- R$ e# r

  3. # V3 _( v% L' e+ Q" a( t
  4. #region 数据去重
    & `. m& T4 D& b0 h
  5.         /// <summary>
    ( H& U& u( y/ m7 \7 N4 \' ]
  6.         /// List<string>去重. H5 @4 y9 H  O
  7.         /// </summary>
    ( P) f9 U+ I" J7 `
  8.         /// <param name="list"></param>
    ( i/ n, G+ G; z
  9.         /// <returns></returns>8 W8 |9 y8 D5 ?" j, W: U# J
  10.         public static List<string> getUnqueList(List<string> list)
    7 S0 b5 @5 L: @# m: Y
  11.         {
      e+ t! M3 b( N6 Q4 @/ B) U: P/ L- _
  12.             List<string> list1 = new List<string>();, N. K* f5 c+ }8 n) Z$ @* {
  13.             Hashtable hash = new Hashtable();. _$ G9 ?% H& T, L2 b
  14.             foreach (string s in list)
    / v+ e9 R; z! `
  15.             {0 r! v: p0 a1 m$ d
  16.                 if (!hash.ContainsKey(s))
    : V; }+ \8 w' b/ a- K8 C
  17.                 {& d) A  \3 q! Q6 O: O4 H3 D
  18.                     hash.Add(s, s);, a& U. b$ r" N$ _% m
  19.                     list1.Add(s);
    7 b" m1 R8 G3 Q" g* L( b$ i3 Y: }4 b
  20.                 }
    ; o" A2 [5 N4 N& ?" |3 X
  21.             }
    . t; B( g$ O$ e1 N9 @1 \7 L1 {
  22.             hash.Clear();* h5 U: N( z& l
  23.             hash = null;
    $ w* X0 Q3 t, [1 n  t7 L7 X& |
  24.             return list1;
    " a& j; a$ n* X% T7 c6 T: l7 q
  25.         }2 N9 x$ x# E. e1 w! A0 T$ X/ i
  26.         #endregion
复制代码
: M- `, m2 b( n( C% e
' Z/ Q1 v" P6 v

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
; p( Z6 i4 D7 G2 x
十分感谢!!!非常感谢!!

点评

缺少一个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! i7 [/ R& Q8 X& @5 M* p
十分感谢!!!非常感谢!!
8 Y" M4 t) z# f9 v7 L
缺少一个gethtml,用下面这个:" V8 U# L) L7 {5 h' M
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    3 G& i: U7 v/ r5 V1 H# _( z
  2.         {/ R! n; I9 X0 n$ ~! {% c
  3.             string strWebData = "error";
    $ Y) @! E. b/ O  V
  4.             try( }; I9 M! X  t3 d, T
  5.             {
    8 S& z& W; t' t; t0 Z7 {2 g) x: T
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    , W& F' _: d4 J& ]- x+ V
  7.                 // 需要注意的:
    1 \0 x$ _; h- g! H% F/ `; W
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    8 v* B9 ?7 P1 O2 q6 W: I( M1 M
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    * z( ]: `! L: B7 j, t- |5 F  V' O" k
  10.                 // webclient.Headers.Add("Cookie", cookie);
    # Z9 {) [0 q0 r1 ]. G6 v3 L  _
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    . [# E" w/ a0 o( _/ X- z: W
  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 A$ A8 Z4 V  M9 q: g; x1 ~& Q1 Z$ e
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ! O& N5 C. ~; V* W9 j
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    $ \6 q, b1 G! K" R, B; Z/ i8 d# M
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    , F/ }( Y2 o! N  J" {6 d5 e
  16.                 //如果服务器要验证用户名,密码 " O7 @  K  \( L
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); % X0 y" i8 ~) h0 `
  18.                 //myWebClient.Credentials = mycred;
    5 E8 x# H: A/ r! O
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    , f' ]4 ?. _; I7 P# t$ n3 m* O& T$ ?2 k
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);( l% z& e9 {, F4 o
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);' `* V. |; A/ @7 S4 z% n
  22. ) o: v6 B4 ~1 c( A- z
  23.                 //获取网页字符编码描述信息 2 h- O$ I5 e8 x$ h2 U9 G; |: ^
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    2 `1 u# d/ \; x
  25.                 string webCharSet = charSetMatch.Groups[2].Value;* Q! ]2 b" B! N0 S# N7 N
  26.                 if (charSet == null || charSet == "")
    % A; X9 L( K4 T# t7 {
  27.                     charSet = webCharSet;
    6 f" b" D. W3 M$ F: z" U3 ?' P
  28.                 if (charSet.Length > 0)
    " ]" A7 }- i& C$ I' b$ i
  29.                 {
    / l3 d: _- j; k4 v. U) k4 Y+ @+ S1 z& O
  30.                     charSet = charSet.Replace(""", "");" x/ N7 y7 y5 Z* s
  31.                 }
    ) D2 D& V: c. Z  {3 }
  32.                 if (UseUTF8CharSet)5 p1 a& p, Q5 x, F3 o; W% j
  33.                 {
      r5 |) P  I4 D) M' V7 J
  34.                     if (charSet == null || charSet.Length == 0)
    ! W( z8 x( U( J  q
  35.                     {
    / e: Y8 F  k! i! M1 w' k
  36.                         charSet = "utf-8";6 H: J3 K$ ~, n+ Z8 _
  37.                     }
    2 c6 c; C$ @7 i) K9 P& L  J# l0 U
  38.                 }
    ( p! B0 i& U! ?' `8 Q  k# W
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    6 D" P8 m: ~$ Z) \2 j
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);2 v; n8 G+ [3 }

  41. & S" \5 k. @0 C+ h! V- [! N
  42.             }
    " W/ x$ A. Q! ?) B% V
  43.             catch (Exception)
    # P: \) n4 Q- G0 b4 F+ C, {
  44.             {" `2 O% n, \6 R2 Q  n; i
  45.                 strWebData = "error";/ a* ?9 g% X* S* o1 N. w1 w
  46.             }7 O- c( Q3 Y$ l+ S0 T

  47. 0 ~: C+ j& N  I: e* v: [, |  y& ]
  48.             return strWebData;5 \3 j5 e* G/ Y
  49.         }
复制代码
- A' q; N# @% O  P! y4 ^0 |# D
: S6 L. a4 j0 E* P& [
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-25 00:10 , Processed in 0.050745 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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