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代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理DataImpulse⚡️纯净住宅代理仅 $1FB企业户海外户,授信户,TK加白户广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9975|回复: 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 抓取全站链接3 l2 ?% s* Q  _4 a
  2.         public static List<string> GetAllHref(string url)" v; o" [' U  j' q1 x7 y
  3.         {5 r7 a0 P" Y) h
  4.             List<string> allHref = new List<string>();
    & R, a6 S( d. @' l. I2 q( ^$ T8 Q: F
  5.             try
    + a! f' r7 o) Y
  6.             {/ B: Y9 p- I  U+ x- w
  7.                 string strhtml = soso.getHtml(url, "", true);5 m5 \& M: {6 {; v! {# u2 G9 U5 ?3 ]
  8.                 if (strhtml != "error")
    9 w9 h! u' D7 J. b4 J3 i: T( h0 V
  9.                 {
    1 ?/ J' l( T; }, U1 R
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");/ }  d  N, D# `
  11.                     MatchCollection mc = reg.Matches(strhtml);/ O# m' g$ [% _2 @6 q/ y) ]) a1 Z
  12.                     foreach (Match m in mc)
    + E6 t. o) z6 J
  13.                     {
    : P# }  M! y0 f7 Z0 ]
  14.                         Uri uri = new Uri(url);3 J0 M6 ~% U4 ^0 W8 e+ L6 B# Y
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    7 A. D1 E* \$ I9 s( `/ G/ V
  16.                         string fullUrl = "";
    6 ^( `# I: @! y7 q; R3 ^, p
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    ! K! }( ]8 w; N7 f0 |
  18.                         {
    # c( \4 ~* L( m6 ~8 Q- m
  19.                             fullUrl = m.Groups["url"].Value;% y1 o' N6 y) ?% Z
  20.                         }" j! e9 c7 q5 y  [+ S& }
  21.                         else
      E1 B( D0 D' S3 V& p: c% P+ E
  22.                         {
    2 \- o+ p; }. W2 x
  23.                             fullUrl = thisUri.ToString();0 V% i9 K1 @0 X" z( ?( ^$ |6 z3 `
  24.                         }
    5 q) v+ g- B1 h" C& h4 q. }* i
  25.                         allHref.Add(fullUrl);- w! G4 P- p. w- i9 }2 x* E
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);( C2 \; X6 c! ?# A* v; g5 j, l& @7 l
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ( [! W8 i. z2 F& |
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ) l6 Q6 o3 _+ A- J" N+ w1 W
  29.                         //Console.WriteLine("…………………………………………");
    ; u$ L: l0 n. `% u
  30.                     }
    3 p. P0 D+ V8 }0 G) m* ^6 H
  31.                 }
    6 h0 a/ b6 v8 L  T# |
  32.             }2 n6 C! Q& b: e8 n3 O$ u# M( |8 g# w
  33.             catch (Exception ex)
    0 \$ n7 H+ u2 ?  e" t
  34.             { }
    3 S* p) T! e0 n, G$ w$ I0 A
  35.             return allHref;. u8 P( t: k& d& J* I5 F7 j
  36.         }
    1 u# N5 r& ?6 V% N
  37.         #endregion
复制代码
% `- d* V0 V, g' ?
; _8 e! H$ {, v$ C2 _" M
  1. , @& H2 O# x% K& F7 W. m
  2. 9 o" v& \# C2 [! y* [( h$ f+ ^$ z

  3. + J# V" W/ Y/ `
  4. #region 数据去重
    & a6 ~6 y/ y7 D. B: |( }: A
  5.         /// <summary>
    . ?* A: P5 ~! X) a- Q
  6.         /// List<string>去重  \6 H5 n  S2 W& y* ^9 c9 J
  7.         /// </summary># F( {+ E' f) Z
  8.         /// <param name="list"></param>
    2 ?8 O2 W6 E8 a: H: ^
  9.         /// <returns></returns>3 G4 N0 P5 ?$ ]) ~. r, r
  10.         public static List<string> getUnqueList(List<string> list)" z1 I; o4 _& L' |: ^+ Z
  11.         {
    2 c" A$ P" Z/ Q# M) m$ v5 K6 x$ ~
  12.             List<string> list1 = new List<string>();/ P* L5 p% Y1 [8 E
  13.             Hashtable hash = new Hashtable();
    % |* R2 z2 f9 S# q3 E$ x2 Q0 D/ I
  14.             foreach (string s in list), [! @( J* n( G+ @
  15.             {
      b8 A6 j3 z1 O0 B
  16.                 if (!hash.ContainsKey(s))$ K$ e+ A8 `2 }. _; I7 Q: P- |
  17.                 {4 t. ?$ |8 {2 Q: R+ h
  18.                     hash.Add(s, s);
    ; Y+ d2 c2 l! T/ D, w. I2 S
  19.                     list1.Add(s);
    2 B& f% |' H3 ^( ?+ g
  20.                 }
    / w( i6 J: U2 M2 R% A( b! D
  21.             }' j% ~$ |; N$ B! p) c* P
  22.             hash.Clear();7 a$ j0 c! B" j) V% w$ `9 ~2 R# w
  23.             hash = null;
    2 v' p; _( [8 d8 p# a) N
  24.             return list1;: A3 x8 t( p' @; s0 v8 m
  25.         }( q2 O3 v4 H  T# X$ q5 Z- |
  26.         #endregion
复制代码

8 l1 B# g! v/ O) b3 k. Q- r9 S# Y' M  G5 x7 z) q) u( U5 X

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

" ~  X/ W; S5 Y+ o) Y十分感谢!!!非常感谢!!

点评

缺少一个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
1 s, p0 J% J4 y/ F9 x% o十分感谢!!!非常感谢!!

+ |$ P% S" A; H4 A6 u7 A: P缺少一个gethtml,用下面这个:
2 a- Q' `" U5 Q! S/ ^
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 + O. i6 G$ `- K( ^; s
  2.         {* z  H# @* Q/ ?, m4 F& y( S5 ?
  3.             string strWebData = "error";, Q9 L0 L3 B" S: O+ ?5 \
  4.             try
    ) ~6 F. B2 t! @2 g- a
  5.             {
    ; a% L9 Z" T: c" `5 b$ `
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ' y. P1 ^7 g. v1 R& |) Z
  7.                 // 需要注意的: 9 m1 ~' |: h( H9 }5 I& ^
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 & G0 J; f; J: Z" q+ b( _' {
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ( M/ i3 |, y7 V3 x9 j6 q
  10.                 // webclient.Headers.Add("Cookie", cookie);
    * X( y& O& z" s& u9 \) G7 M2 \
  11.                 //这样可能需要一些重载方法。根据需要写就可以了3 j4 T: i6 w- A8 ^$ \. }
  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)");# R2 c# H- T- G2 K- H, u
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
      A0 `4 z* \& D$ v" d* {8 c
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    " j" a6 H: T% T8 o$ F
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    ( |  p" V5 b( Q& r/ z
  16.                 //如果服务器要验证用户名,密码
    0 ]# r7 j6 ^. n' S& T& H
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); $ T/ P- d% ?- m
  18.                 //myWebClient.Credentials = mycred;   f" S( ^( o" F5 S
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)   t9 |; E4 Y7 ^7 C" T3 V
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ; A; w- W: a1 M- V' E+ {
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);% R* o$ ?1 v: `8 r

  22. ' R8 }2 f4 }8 \/ ^7 @
  23.                 //获取网页字符编码描述信息
    # i# n- l2 a5 L. \
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    1 S+ y. \. b% z# ^7 D0 G0 Y$ s: M
  25.                 string webCharSet = charSetMatch.Groups[2].Value;# z7 i' q1 B: G+ N! m& E* J* q
  26.                 if (charSet == null || charSet == "")5 o' G/ l* ^9 }  ^! d
  27.                     charSet = webCharSet;1 N1 ?6 ~; }( ^" q
  28.                 if (charSet.Length > 0)
    . R( X9 }$ l; c3 o  P  H
  29.                 {
    ; Q" e8 W* D) k7 z8 m/ ^# [
  30.                     charSet = charSet.Replace(""", "");
    , q1 @% a& |3 ~- B$ Z
  31.                 }/ F2 p% L8 ]9 Q  [8 ~4 {' q* d0 H
  32.                 if (UseUTF8CharSet)
    - x9 D; s/ d8 g' d0 r" \6 i: r
  33.                 {# T$ ]" F, j6 O' C8 b
  34.                     if (charSet == null || charSet.Length == 0)
    4 \( ?' A. L2 F% l0 r& \! z6 w
  35.                     {
    2 s) e' X  ~) l
  36.                         charSet = "utf-8";" i1 e- S" S1 B& C, F7 E! ]
  37.                     }
    0 f: J' p; a. c, @# T5 }
  38.                 }& E. ?4 n2 @8 U
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)0 j7 r) U% S$ q, Z; X
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);' G+ z. f% w* @- |6 x( `0 `& F4 \
  41. * P7 j! c' Q9 [: H
  42.             }) K  t$ R, E* k( n# T, i
  43.             catch (Exception)
    ; t4 }& w9 c! l$ v0 ^, K! m
  44.             {, s. U; r0 t# e& b+ M/ ?
  45.                 strWebData = "error";
    - p  _  X( a3 F( P# a7 K
  46.             }
    % N( O; ]8 E( M
  47. ! i8 Z& R! Q& z* C
  48.             return strWebData;
    $ h$ R( K. y# v% }% Z
  49.         }
复制代码
: w4 `# V/ {3 j3 Z" d

, Z. ^0 Q1 t# o- q7 Y
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-17 12:35 , Processed in 0.050225 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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