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%,国内持牌机构  
查看: 9982|回复: 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 抓取全站链接
      v$ [* P1 T3 U' p/ u
  2.         public static List<string> GetAllHref(string url)7 i7 v0 k3 k8 d; T& l7 B+ l0 h% B
  3.         {7 _: Z" h* P  c; |
  4.             List<string> allHref = new List<string>();
    8 [# @6 N6 P8 ~
  5.             try6 b. ?  [- q/ E
  6.             {/ W. t# l! m$ _# D
  7.                 string strhtml = soso.getHtml(url, "", true);
    9 E  ~1 W& n' `
  8.                 if (strhtml != "error")+ q% K2 o) y3 M* D  n. h) c  h
  9.                 {& Y1 q4 `, x' p3 y7 X
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");& n  T- |  G7 z; g, r/ ~
  11.                     MatchCollection mc = reg.Matches(strhtml);5 G0 o$ q) ?2 D) e3 w2 P
  12.                     foreach (Match m in mc)
    ! B- r3 e- D' v  c6 t
  13.                     {1 b3 S2 t. e  ]* y
  14.                         Uri uri = new Uri(url);
    & `7 E. ]/ ?' u. Y) E* c0 ?
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);) N# h6 G5 N0 o' J' e. i1 }/ R
  16.                         string fullUrl = "";
    7 c, b2 A$ i8 u: {- M
  17.                         if (m.Groups["url"].Value.StartsWith("http")). o2 @6 s$ j. p8 V
  18.                         {
    2 P4 w" |' u, G! o* m
  19.                             fullUrl = m.Groups["url"].Value;
    8 r! k/ Q. B+ d4 ?/ z/ Z
  20.                         }
    * |" P/ J6 y- e0 S9 }/ J
  21.                         else
    ; H+ m% Z4 e: e( B' V* A) H5 t
  22.                         {4 o8 ^/ N# \+ o5 d
  23.                             fullUrl = thisUri.ToString();. k; M9 H$ q) O- B1 D
  24.                         }
    0 @, l% S$ i. S
  25.                         allHref.Add(fullUrl);
    * z1 [! N5 R' l2 e, j  O4 o# Z
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);* K' q* e7 b" q) b* N9 t, o6 Q- j1 U
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);9 Z& y( I/ H9 ?8 @8 R4 n
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    . L. h) e. _  F" M8 \, P9 @
  29.                         //Console.WriteLine("…………………………………………");
    * X+ L2 o- ~4 i- G( E& x5 w# u
  30.                     }
    , {  j* Q7 }9 x7 ~" O" M* p- l
  31.                 }
    " X1 J/ F9 |( z- ]# a
  32.             }
    9 ~+ b7 k2 w( w% l9 N
  33.             catch (Exception ex)$ t7 ]2 h+ s  z9 }0 Z* _
  34.             { }. r" A. K% X0 O' Y
  35.             return allHref;% C. k& S. \; Q% i5 g& j. s2 E
  36.         }& x) R/ ~! s) M" G- H( ]  K/ W
  37.         #endregion
复制代码
5 U: G% n" y. q0 Z# J$ X- Q

+ y% H' P) Y1 P7 Q# l8 q# B
  1. * ~5 U2 d* I) a3 T" y$ Q" P3 {

  2. # U6 z, q6 {5 D% f3 S6 W" ^& L

  3. % I8 o* D+ a0 O8 R
  4. #region 数据去重
    - r- {9 b1 P( n3 a1 ~$ x; I
  5.         /// <summary>
    ! \! ^! Q+ G$ z: c
  6.         /// List<string>去重% V# u. X# I  E  ~1 q( m
  7.         /// </summary>
    / P  X' F7 d9 e1 ]
  8.         /// <param name="list"></param>
    5 y6 [3 i" H1 b9 C
  9.         /// <returns></returns>
    3 X/ x& {" p2 Z, G1 t  W  P
  10.         public static List<string> getUnqueList(List<string> list)
    ! e; g& ~7 R8 P7 @
  11.         {
    " X- D' X% L+ b. S" h- _
  12.             List<string> list1 = new List<string>();' ^. r: B+ ], h/ d5 J
  13.             Hashtable hash = new Hashtable();
    4 D2 H' G0 a& j* R
  14.             foreach (string s in list)
      S$ F7 j/ K" x( O6 d
  15.             {4 A; C5 Q0 p4 E: \0 K7 a+ t9 X
  16.                 if (!hash.ContainsKey(s))# y! W! T9 \9 p  |! }. U/ g
  17.                 {. t2 F. [" _& ~# m! C) [
  18.                     hash.Add(s, s);# N8 ^) f" f* @' O* D; |, j
  19.                     list1.Add(s);
    $ C( F' Z" Y3 C
  20.                 }
    $ ^8 w5 T: \, B9 Y; l
  21.             }$ S3 X' k# Z9 n$ g
  22.             hash.Clear();+ V0 c: J3 w1 z# t( W
  23.             hash = null;
    2 X$ I% `1 D( C
  24.             return list1;
    , m# Q- ?, b; N6 u* _' A6 I( Q
  25.         }/ V' b  N5 }0 J( i$ |1 w1 Z
  26.         #endregion
复制代码
0 z7 c6 q+ K( l$ w  ?- \; G

. Q, `8 `0 C& p) }7 t' p

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
' R3 _  h" \0 W; k& I4 k' B! H. `+ P
十分感谢!!!非常感谢!!

点评

缺少一个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& F% }% n# M) w, t1 \: F, l9 o
十分感谢!!!非常感谢!!

) w9 J6 I0 y+ X缺少一个gethtml,用下面这个:) Y3 T% L- v- C
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    0 r3 z! D6 c9 c8 F; u  v
  2.         {' o& _1 c' t8 X& ]
  3.             string strWebData = "error";
    " n- R) |0 b1 F
  4.             try' O0 W  i4 ?; y% K* p
  5.             {
    4 S8 `$ Q, B& y6 [0 J% j6 P
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    9 n( _  G* N6 u; ^2 D
  7.                 // 需要注意的:
    3 W) g6 u/ p3 v' Q) y9 q
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 ) w/ B6 Q9 X, G" S
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ! C: n  p. e& c7 L9 E& h
  10.                 // webclient.Headers.Add("Cookie", cookie);
    0 }* T3 U# |. Z- {
  11.                 //这样可能需要一些重载方法。根据需要写就可以了8 K7 q" X& c  }( a/ q( V
  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)");
    3 \. y! ?' J% ^. T* C7 v: M
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");' ~% N$ C& b- j9 T9 j) U
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ( i# \% V9 B( Q5 x; v# p% H: G
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;6 j5 u- {+ S& X  {1 o" _; R
  16.                 //如果服务器要验证用户名,密码 - C+ R+ W" A- V) M: b6 Z8 K4 h2 w' j
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
      x# ?0 j2 h9 H8 F- E. q; b
  18.                 //myWebClient.Credentials = mycred; ! ]& x8 T) o* _! x" M9 m7 n
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    - J$ `, A: J+ l3 y( T
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);; M  {0 D1 F6 k! i6 q
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    - b, P- U7 ?5 Z" A- n6 ]
  22. , M* p" O( g" I' L
  23.                 //获取网页字符编码描述信息 " v! {& _: m6 v- }2 d9 N
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);$ f- ~% c# T% i' I; |* M% ]
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ) N2 I3 R3 l, F8 V+ s0 ^( i3 O
  26.                 if (charSet == null || charSet == "")
    $ g" d& }, e9 l7 Y6 L7 V
  27.                     charSet = webCharSet;
    6 w% j7 J5 X+ p8 L! j
  28.                 if (charSet.Length > 0); g4 A% p8 \0 j9 M0 S9 @& W; D
  29.                 {
    6 G) B$ n' i: S. C1 e, g8 V4 t
  30.                     charSet = charSet.Replace(""", "");
    ' n5 R; ^4 |% x9 ]9 p, d  P
  31.                 }
    5 z5 \' B7 k( k2 g/ h0 r8 H, _
  32.                 if (UseUTF8CharSet)
    ! Q6 G3 C/ U- ?8 U6 D8 V. o" U" F* P0 O
  33.                 {
    7 I# ?# M3 W: H( n5 A* [
  34.                     if (charSet == null || charSet.Length == 0)
    # i6 m4 n! ?" Y8 m! |
  35.                     {
    % V) }( f% ?! s' w  |
  36.                         charSet = "utf-8";, A# W- y8 z9 n1 L
  37.                     }
    8 f- s4 D( j$ l2 J* O
  38.                 }: O% L+ A9 [* R# H& u2 j
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)0 Z5 \* J. m! l: N6 i% E& {: P) ^
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);) l/ W4 C% w! `" a- e2 c( r
  41. . M& v# m% |4 f8 s- n/ y2 [$ Z
  42.             }
    - V+ q9 V# D- `) \* B4 h
  43.             catch (Exception)3 q% k" J: ?9 W6 O
  44.             {( `/ ]5 P( s  [; m& c* F7 V( y
  45.                 strWebData = "error";5 q" P. M, g2 p1 `, i
  46.             }
    " G: o3 ~9 i( i8 k- ]5 I
  47.   W/ E; R/ r6 C6 J! j
  48.             return strWebData;
    0 a) N- a& @$ @
  49.         }
复制代码

5 I4 r) b( v' y5 I; _* E! i' w* y
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-18 13:14 , Processed in 0.052973 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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