AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Adsterra China
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡DuoPlus专注打造跨境电商云手机BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户Google、Bing官方总代  联盟流量开户FB资源,账单户,分享户,国内一手
FB企业户BM户账单户源头海外CL企业户源头PTM全球虚拟卡—进来交个朋友!PTM虚拟卡⚡️费率透明⚡️额度随心
虚拟卡 - Pay2.House【找量】BA独家Nutra单找量广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9492|回复: 7

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

[复制链接]

36

主题

174

广告币

260

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    $ m5 b7 L% }9 S7 |, ]* M# f
  2.         public static List<string> GetAllHref(string url)- Q. p" G7 q) ^& w9 ^7 v
  3.         {' V% y9 ]! g8 N+ O: m  J4 C
  4.             List<string> allHref = new List<string>();5 X- F$ U/ h# o. ~4 `4 i+ h& t
  5.             try
    ; s1 `$ U4 _4 r1 U! d$ J
  6.             {" j$ h# K5 o, m* N
  7.                 string strhtml = soso.getHtml(url, "", true);+ Q% g8 m" f3 [2 G, c
  8.                 if (strhtml != "error")
      U6 Z% O6 o: [) P3 h  {
  9.                 {
    4 b* {  Y, j5 X5 R0 O" H7 c
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    , I! G5 r/ f% R. K
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ; E+ F6 R# [( A6 x& G0 ^
  12.                     foreach (Match m in mc)& {% Y0 k0 {* T7 G& w2 G0 ?
  13.                     {; W! ^6 a# Y2 R+ h$ K! X
  14.                         Uri uri = new Uri(url);9 ^2 |5 R6 {# r; D
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);: R( K4 U5 {. z! o$ {
  16.                         string fullUrl = "";+ W! X9 a% K4 V) n7 N
  17.                         if (m.Groups["url"].Value.StartsWith("http"))  W' Y- a5 B# x, _: y( `
  18.                         {
    5 b' ]( l  H$ I5 f/ `% |; {1 r
  19.                             fullUrl = m.Groups["url"].Value;" O2 x+ ~' p$ v$ g5 B0 m
  20.                         }( N$ P6 _  w' M& B6 \$ V4 k( v
  21.                         else" F1 V- U& E2 Y0 P9 g. ~& I/ T/ s7 l
  22.                         {" c' X% J* i: l6 A4 W
  23.                             fullUrl = thisUri.ToString();
    * \7 U0 ]0 d0 h4 T$ a: Q9 c2 V
  24.                         }/ [' Y8 D4 `& ]
  25.                         allHref.Add(fullUrl);
    4 F' k* ^7 n7 m, K
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);* G1 U9 G* @4 {/ h
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    6 E$ P% l& y; ~
  28.                         //Console.WriteLine("补全链接:" + fullUrl);# d. Z/ Q/ t0 h$ [
  29.                         //Console.WriteLine("…………………………………………");: {  Z/ K' d+ ^/ h, I
  30.                     }7 ^5 I8 z4 `7 @* ?+ {
  31.                 }, H4 j9 J0 U) j
  32.             }0 a2 c: U$ ]" x( _
  33.             catch (Exception ex)# l, r7 T2 a' n+ e# a$ |# o/ K
  34.             { }
    4 c, [& ~8 M1 r7 F: N
  35.             return allHref;
    8 |( x8 r1 ]/ t& s  G. A4 g
  36.         }
    5 y; @; B. B8 g6 j3 L  Z
  37.         #endregion
复制代码
2 ~8 y5 u& d& L7 {9 h  S$ j
+ D& d% ^+ z0 u3 i+ C
  1. % ?: w4 p) ^- E. D. V7 _5 l
  2. $ S- I# d& M' v8 P  ?5 @
  3. 9 U0 _! ^. T" z* V5 [2 W
  4. #region 数据去重1 c, |5 |" i# @5 I1 L
  5.         /// <summary>
    9 t0 X! x1 A* T
  6.         /// List<string>去重+ ?5 n" @7 k$ c8 s8 @
  7.         /// </summary>
    4 Y. |6 H8 E: G$ i3 q- M- x& E6 Q
  8.         /// <param name="list"></param>; `, C! v% d0 C7 q2 u. O
  9.         /// <returns></returns>
    / t5 m% E8 u" [. ?% F( ]
  10.         public static List<string> getUnqueList(List<string> list)* ?3 I! O/ J' }5 z
  11.         {
    : M# \+ e) h+ W9 a6 P4 U# g. t
  12.             List<string> list1 = new List<string>();
    4 X0 j7 q) K% w$ @* y5 g& ^7 K( S
  13.             Hashtable hash = new Hashtable();& V6 y$ ^; r# t! ?' R
  14.             foreach (string s in list)
    ' m" E8 O; {- P
  15.             {# n6 p- b4 I" D; g# }4 u: {' L
  16.                 if (!hash.ContainsKey(s))8 W* R/ l# `1 o8 q5 q. T3 A1 B0 z
  17.                 {
    . V7 I4 r8 ?5 b- q  d6 v6 W
  18.                     hash.Add(s, s);
    ( D& }. ?0 Y) A  Q- C3 ~
  19.                     list1.Add(s);
    6 T+ R4 q9 X" k! _7 @0 t, v, l& q
  20.                 }9 P$ l) X/ \" `1 }6 ~
  21.             }7 o$ h3 k! S; k$ j( s
  22.             hash.Clear();
    2 O  W' _' l+ p8 z: G7 k) p
  23.             hash = null;
    6 {) J5 C5 P0 M6 |0 `
  24.             return list1;
    8 o% ]) F" \  E0 _, C6 Z* I
  25.         }
    8 F5 [% U4 o7 A/ _, U6 ~
  26.         #endregion
复制代码
3 G& w2 N0 A5 Y7 ^3 z
2 I2 M; v& _5 d* j: p) ?1 q

点评

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

使用道具 举报

36

主题

174

广告币

260

积分

初级会员

Rank: 2

积分
260
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
1 y, M" ]( r* B
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1467

广告币

1810

积分

高级会员

Rank: 4

积分
1810

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:207 x/ n6 l$ i8 t" Q
十分感谢!!!非常感谢!!
- Z/ _2 G! E: o: S$ _0 y
缺少一个gethtml,用下面这个:
: T  c) e& t* s% i4 {6 b1 W
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 & u/ N; _: b/ {4 k6 j
  2.         {7 i/ ~$ |" [% P1 _
  3.             string strWebData = "error";
    . O0 O. P/ X' F" m/ d% k- X/ Q. [+ F6 b
  4.             try- _# B9 l3 i2 V: l' V! V  N
  5.             {
    + _- B4 B9 n# J, ]* `& x
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient % D8 X( C& y9 z5 Z
  7.                 // 需要注意的:
    ; I2 F1 H( k" `* W$ W4 }' L  O4 t
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 4 {) S& B# c$ u3 C
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ( l2 R$ S5 c& d* @
  10.                 // webclient.Headers.Add("Cookie", cookie); 2 Y. P& r0 X; C% F# p( s( B$ M
  11.                 //这样可能需要一些重载方法。根据需要写就可以了! u9 B1 P* {  N, v9 x
  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)");
    . f0 H& L5 m- D0 R. P; O
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    2 @$ M; G0 A9 w+ O3 _
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    2 {6 b% G" i% W. M* }
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;. N4 B+ m" G) N8 t  S! b. ?9 B
  16.                 //如果服务器要验证用户名,密码 ! U6 _8 Y/ D; P5 ?0 Z
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    $ h! _; m3 [- Z8 A. H; d
  18.                 //myWebClient.Credentials = mycred; + J; J. j1 m, {$ S/ @
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 2 S  }: V( w" R8 K/ d, j/ m' A
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    $ g5 }2 g8 a. n+ ^; n2 ^4 U( \: n, y
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    0 c$ z5 j4 B1 y; d! q

  22. ! }1 J6 v4 A. D+ h* G1 K3 |( ]1 K4 _
  23.                 //获取网页字符编码描述信息
    $ M6 J. w3 }8 }/ p
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);" T, z. v- R, U1 ~
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ; z3 M3 F- D+ s7 t9 e" K. K! C6 M
  26.                 if (charSet == null || charSet == "")
    0 T1 R" A# Q. }$ ?
  27.                     charSet = webCharSet;4 a: |6 q! Y( _# v4 _
  28.                 if (charSet.Length > 0)- [  h, _; i$ ]* z6 z
  29.                 {
    , q; A. o9 R! z1 r2 z$ ^+ v
  30.                     charSet = charSet.Replace(""", "");
    7 ?1 B: `: G# ^
  31.                 }
    ( I2 p5 Y' T& A& n- Y
  32.                 if (UseUTF8CharSet)
    ' b; ^; h$ L. ]/ Y
  33.                 {
    6 W/ f! R4 L1 `, D# U
  34.                     if (charSet == null || charSet.Length == 0)
    4 H* ^+ i, q. s) ^8 i% l( }
  35.                     {9 s/ ~* M  I: q& ]5 }
  36.                         charSet = "utf-8";
    * G$ e6 v, F, e, [
  37.                     }
    / F6 s( C" P* N, w* f
  38.                 }1 C. ?1 {2 q' R; o
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    8 d, R9 h3 `& |& r' q) a
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    2 P8 {1 A- q' a% ?
  41.   k* [" F5 B0 y& ?" }. r0 |
  42.             }( V( Q. {. M- j& v" v
  43.             catch (Exception)
    3 d4 H2 G' I$ f6 ?9 z* p9 ^
  44.             {  z; q  ^( }8 e+ t7 T, b
  45.                 strWebData = "error";
    : K" D# e0 ~+ s" e
  46.             }
    1 E5 |* [) N3 A' q! l
  47. 8 N2 B% o. i4 i4 q# K& i5 W# M
  48.             return strWebData;
    4 ^2 e' T! l* d+ d7 [) e& r
  49.         }
复制代码

  S/ p5 p8 A! f) p3 L1 K4 Y2 ]. G. H' W$ M0 J) |* C8 B( |) p6 t
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 08:13 , Processed in 0.047983 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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