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充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手
TK加白户/二解户/FB海外户/GG老户海外CL企业户源头最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审
GG,FB,TK, 欧美源头, 欢迎合作❤️FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇域名防红⚠斗篷工具/可试用3天
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 10124|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

213

广告币

297

积分

初级会员

Rank: 2

积分
297
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

1482

广告币

1824

积分

高级会员

Rank: 4

积分
1824

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接) U( ~0 Z; y4 }& s3 B2 w
  2.         public static List<string> GetAllHref(string url)# f. Z$ ^6 J2 M2 `) u( a6 h* ]6 f. R
  3.         {
    ) o5 r+ l& _, \& x" a
  4.             List<string> allHref = new List<string>();
    3 A" ^2 k9 q5 h) d2 p
  5.             try: k9 {% {) D6 K3 F
  6.             {! B; h9 b/ m( U8 f" ^0 L/ A
  7.                 string strhtml = soso.getHtml(url, "", true);* Y* i" J& \: ]/ r
  8.                 if (strhtml != "error")
    7 P/ q/ E+ _2 ]' y2 [8 v
  9.                 {
    2 L1 `% {8 v3 o# x! b6 X
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    % S# p9 H( R5 R( S6 ^! Y
  11.                     MatchCollection mc = reg.Matches(strhtml);1 v4 Y: _2 r! A! M- t5 M/ c
  12.                     foreach (Match m in mc)! ?2 Q. B' `0 x
  13.                     {
    7 N2 |3 ]) p5 E% q6 E6 h7 h/ k0 f
  14.                         Uri uri = new Uri(url);4 C8 `( C9 B# `+ I% c$ h8 e
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
      T- A. R# H& A9 R
  16.                         string fullUrl = "";, G  X, U- g$ [0 [' m
  17.                         if (m.Groups["url"].Value.StartsWith("http"))" N, T  x" ^. w" F8 R3 \
  18.                         {
      @) m1 v# P6 i
  19.                             fullUrl = m.Groups["url"].Value;. Q# P( B) f; Q9 h7 P0 q6 j- D  {
  20.                         }- W3 i$ q5 f0 a# n0 D
  21.                         else
    . Y$ u8 A3 ^; t
  22.                         {# w* i5 Y! |3 T( I4 w3 Z
  23.                             fullUrl = thisUri.ToString();
    1 ?& E( X6 ~: u4 _8 [4 e9 F
  24.                         }
    - z/ t( D1 M2 Z! o8 b
  25.                         allHref.Add(fullUrl);  T  N  S, r1 P
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);& E1 D0 ~, h$ N3 t0 ^6 D5 i. d
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ' E9 I5 m- E7 r. S% h. L9 N
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    " P; Y& a) f1 b# A" l
  29.                         //Console.WriteLine("…………………………………………");
    ( J% H* `0 H# ~. ?" B8 A: E* y
  30.                     }
    3 S2 `2 S5 b+ ?& R) X, J4 r; p8 m
  31.                 }
    + o+ f% Y5 J2 h
  32.             }+ F' h0 Z6 G8 H- j6 u
  33.             catch (Exception ex)" d/ W# y- `* m, e' e0 K' s0 N
  34.             { }
    0 h! e2 \1 J, T8 G. c3 w' T5 V2 k
  35.             return allHref;
    5 P) A( ?% {6 ^! x2 J6 G7 t
  36.         }* [% n2 n: h. Y, F2 ]4 T
  37.         #endregion
复制代码
# x/ X2 g" q1 R7 R$ M

) O% }6 E: u. k- L- |. l
  1. ( O3 x$ m+ P. m
  2.   p: A" x) v5 V: a% {2 S' b( h9 b

  3.   E3 [, X1 ?1 ~$ i4 b
  4. #region 数据去重/ C/ c6 D) Z1 @+ O
  5.         /// <summary>
    * H! a3 B, e0 o* N' O
  6.         /// List<string>去重
    + |- B* K+ P' b! v* V
  7.         /// </summary>
    ( c$ L9 H" R5 f$ F2 p- L1 @4 i
  8.         /// <param name="list"></param>, U1 e; ]  _8 P
  9.         /// <returns></returns>
    3 `' N( w3 U- x, K, P# q
  10.         public static List<string> getUnqueList(List<string> list)4 u: ~% D( O+ G5 L
  11.         {" F  \" s: t! x; h
  12.             List<string> list1 = new List<string>();$ x' w+ G. j( q0 k3 h9 @
  13.             Hashtable hash = new Hashtable();+ U# O( e9 c6 l9 ]& b3 |; z( C( \
  14.             foreach (string s in list)
    . C( }' `, z  g
  15.             {* Q+ H7 o4 q' X5 ~
  16.                 if (!hash.ContainsKey(s))7 f+ [; f$ `7 D: \4 C
  17.                 {
    : v  |+ C! }. ^0 B2 |/ a
  18.                     hash.Add(s, s);
    " C( |' K; }) a1 ]  {
  19.                     list1.Add(s);
    $ n6 G# Q6 l$ Z6 C
  20.                 }; p( }& y+ L8 ^( y; f- d8 g
  21.             }
    + i* E0 M1 o; H2 O8 i( G6 o
  22.             hash.Clear();. ^+ c5 |. e+ n, D. P9 ^& ^1 u
  23.             hash = null;
    * h' B5 T  Y4 |
  24.             return list1;
    2 V* A) O1 M& h# w
  25.         }6 Y6 A" _9 n/ b# {: _. c9 n3 u% g
  26.         #endregion
复制代码
6 }" s- i/ s( B  v( T. w
! h' |6 u  O1 w6 {8 t; M

点评

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

使用道具 举报

36

主题

213

广告币

297

积分

初级会员

Rank: 2

积分
297
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
' A1 Z/ Z+ C0 W& e. H5 R
十分感谢!!!非常感谢!!

点评

缺少一个gethtml,用下面这个:  详情 回复 发表于 2016-2-26 16:23
回复 支持 反对

使用道具 举报

2

主题

1482

广告币

1824

积分

高级会员

Rank: 4

积分
1824

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20
% v3 {# d1 }' l1 T6 L4 k; A' z十分感谢!!!非常感谢!!
( X4 J  c# v! S! z, G: `# r, X, ~% O
缺少一个gethtml,用下面这个:6 N6 X  ~6 S1 n3 o  x
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 ' L" z1 v  I% h/ [
  2.         {
    2 K; W( V3 X. B: z! ~" b6 z( R
  3.             string strWebData = "error";1 z- ?- u! L$ ^' J7 j
  4.             try
    ' f# I$ V  I9 `0 Y3 V1 Z
  5.             {
    ; S# u$ Z' m3 O) H4 }+ q
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    % p% r7 U) x  g. J$ c2 x: F
  7.                 // 需要注意的:
    ; B0 X3 b  D/ l1 `& P, t
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 / \, ^+ v+ n2 H, L
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    $ \7 N' K( Y' B" ]
  10.                 // webclient.Headers.Add("Cookie", cookie); 4 T' h2 f* w6 i7 \
  11.                 //这样可能需要一些重载方法。根据需要写就可以了$ c2 o7 A) q3 z5 ^" S* z- }
  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)");) F( m6 F) ^7 b+ N- E
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ( S! r+ i+ Z! O: ~, w% b
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    + O: Y4 A; u1 y% z/ b" ^
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;8 V6 n2 i3 I7 j# A+ h% X4 A, ~
  16.                 //如果服务器要验证用户名,密码 % O; ?6 l2 y  q. c7 r& v
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    7 t, p. b7 r, ^3 e( w/ o( a8 Z2 O
  18.                 //myWebClient.Credentials = mycred; ; z: t4 V$ U4 ^/ _1 J5 ~1 i* q1 J
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 3 Z9 j' c, p; L5 ^$ F+ v
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    + Q1 p) {# G6 f( o, J9 u# i$ E
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);: f& q! i+ p7 X8 s% W: H( M# {

  22. 9 W7 s( b0 s% Y9 `# H1 {8 v9 E1 S
  23.                 //获取网页字符编码描述信息
    + p. z/ H8 f  r3 y7 x% G  o
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);3 d7 I  H; e5 O% e4 Z4 K' Y
  25.                 string webCharSet = charSetMatch.Groups[2].Value;- u6 E  P. f( w
  26.                 if (charSet == null || charSet == "")- [. H( r8 h( d( l' j" I$ f0 i# ]3 h
  27.                     charSet = webCharSet;
    % J  B# D/ k3 y# ?5 _. @
  28.                 if (charSet.Length > 0)
    , C: D: |& \: `% u" o6 ]* F
  29.                 {
    ( {5 {: H7 A( e3 ?/ q8 [1 i
  30.                     charSet = charSet.Replace(""", "");7 Z  y% Z0 t* i
  31.                 }
    ! w# z0 r2 r- O: [0 \) o
  32.                 if (UseUTF8CharSet)
    7 q9 ]3 ]3 m. Q
  33.                 {
    & C0 @; w; K8 k, v; \
  34.                     if (charSet == null || charSet.Length == 0)
    4 A2 ~+ D* f4 y- ~. E$ o8 R
  35.                     {) h% C4 z' w7 f4 g
  36.                         charSet = "utf-8";) D: f& u) m" |5 v/ \
  37.                     }( ?' A3 F) M/ }* [, @* `& |
  38.                 }/ z; d. s& H! q4 {7 B2 G  h
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    . U7 z6 G. v5 A. B, w8 h4 ^. p
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    2 }* k$ k, b+ I8 S
  41. ! |: z2 q* Y8 S
  42.             }
    9 s. b$ p- G" z$ k" F! \
  43.             catch (Exception)" H; ]9 \6 G" i4 P/ x4 n
  44.             {7 D8 q+ q" s0 C" @' Y, T
  45.                 strWebData = "error";* Y3 A7 R- ^! G9 V6 W
  46.             }
    9 Y2 ~/ l; M+ p; ~7 l" \
  47. : @% b) f) v4 y2 H7 Q' `' z
  48.             return strWebData;. j; `3 P; h% y* n, `$ A7 F2 v
  49.         }
复制代码
; A7 k% O) E3 O2 I) ^

1 X1 `% ~0 ]% `
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-27 17:24 , Processed in 0.054807 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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