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户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISP
FB海外户、GG老户、TK加白老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多
最大欧洲Nutra网盟BA找量 FB个号1块一个TikTok2审户/老户/国内外端口/加白GG,FB,TK, 欧美源头, 欢迎合作❤️
跨境债务催收/风险代理FB企业户海外户,授信户,TK加白户Proxy4Free独家住宅IP池❤️免费测试联盟收款/海外资金下发/服贸结汇
域名防红⚠斗篷工具/可试用3天广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 10004|回复: 7

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

[复制链接]

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    8 V" w: q" V- `" B' S
  2.         public static List<string> GetAllHref(string url)
    ( z3 }, C3 L" I* W% I
  3.         {
    " t  O4 N& i/ P. G  ~; ^
  4.             List<string> allHref = new List<string>();
    5 _3 W5 X! s: ?& V
  5.             try
    : B, A9 J2 v8 Y' M2 c7 J5 L
  6.             {; J9 g$ h6 h8 p6 u5 l) E/ {
  7.                 string strhtml = soso.getHtml(url, "", true);- w/ R6 d1 B! t
  8.                 if (strhtml != "error")
    / ~- |! `+ F7 A8 a  V% F/ D
  9.                 {
    ) X7 G4 y$ |1 s) I
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");. e  h& G' x5 c  I8 M3 Z- @) _
  11.                     MatchCollection mc = reg.Matches(strhtml);& l( _8 {$ ^% h; w. C6 O' L
  12.                     foreach (Match m in mc)
    & P/ {7 g9 e1 ^$ T
  13.                     {
    ) i" @1 S' ]! d+ n
  14.                         Uri uri = new Uri(url);# @! h2 [' \7 u: U' V8 b& M
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);- X4 W& y% i. b) d) a5 N
  16.                         string fullUrl = "";
    0 W" G/ ?8 O8 |# P
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    $ S* h( K; g. Y' b: f- }
  18.                         {
    / w: J) W: X- U; `2 B
  19.                             fullUrl = m.Groups["url"].Value;+ ^8 P# l, y& i
  20.                         }+ G$ a% r2 J7 ~5 y% r) A0 L
  21.                         else
    8 ?5 f9 o9 l+ k9 l7 ]: c4 ?
  22.                         {1 A6 e* U$ S' _
  23.                             fullUrl = thisUri.ToString();, ?0 f4 k% K+ G9 E* N
  24.                         }8 c: @! @9 L  z5 n) X1 ^
  25.                         allHref.Add(fullUrl);
    & R, f7 c: D$ t- k# ?
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);; h. k6 v4 @9 b( F$ y
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);+ @; R2 A1 D  m8 x! u8 S# g2 x6 M1 k
  28.                         //Console.WriteLine("补全链接:" + fullUrl);/ B0 G# v$ e# u& b+ S) y
  29.                         //Console.WriteLine("…………………………………………");& u  S9 i, f4 Y3 \% q$ K& ~  `
  30.                     }+ d! M4 e3 _1 a$ L% U
  31.                 }
    9 C4 p4 a& I6 l! O
  32.             }
    + h% \3 |3 b0 J! J
  33.             catch (Exception ex)
    5 V' c- ~% r3 D$ z" V' q1 H  j% P
  34.             { }
    . W* D4 G- a0 r6 m
  35.             return allHref;
    , f- v, f2 D$ E% z
  36.         }
    % ^5 c: [' Y/ m; f5 e- }
  37.         #endregion
复制代码
3 g5 h; k" F# K+ A% T, [) }

  ]5 M( @. x: a  ~  j9 m' Z' _
  1.   j" v3 G- r" i9 _) R% c
  2. / b% `# h6 l/ J1 A/ f1 k/ o

  3. . O* @$ E$ J, n2 _0 Z1 T6 x
  4. #region 数据去重
    6 v, u7 X+ m7 y5 ?+ @9 {
  5.         /// <summary>! ^/ ^' q* O' B& _0 y5 I
  6.         /// List<string>去重
    ! y. T' r" ^6 Z6 W
  7.         /// </summary>
    ' y4 p- i. ?0 M
  8.         /// <param name="list"></param>) B6 W% b& o" h0 g2 K: @
  9.         /// <returns></returns>
    + C, y% v% C( f! J$ |, a
  10.         public static List<string> getUnqueList(List<string> list)! a# m) j2 ^( ~6 f) C* j
  11.         {4 k, h4 A. |$ z1 M
  12.             List<string> list1 = new List<string>();+ O2 L, L  {  L0 k4 J; z2 S
  13.             Hashtable hash = new Hashtable();9 d7 z% C; M& m
  14.             foreach (string s in list)
    . x/ `6 ~2 r( Z7 Y# U' o( \7 X
  15.             {
    ; y# U4 S9 V% X$ {3 X
  16.                 if (!hash.ContainsKey(s))# ^3 N! ]6 }$ J! N
  17.                 {9 A; n. \: \7 t3 {$ p
  18.                     hash.Add(s, s);
    2 D9 G( c" m1 d8 [" [
  19.                     list1.Add(s);
    / S8 h' F5 W, d- r# P
  20.                 }, A- v1 S2 d% _: ]7 ?
  21.             }/ q  B. k# G4 [1 j' X* M
  22.             hash.Clear();+ q3 _) F  b: {
  23.             hash = null;
    6 W' T/ U6 \5 p" M9 o. n
  24.             return list1;& }$ N5 H, L( k" y8 x
  25.         }* y. v8 K7 H% c* q, W7 k
  26.         #endregion
复制代码

9 ?3 e# _- g7 Q4 _  ]$ M" x& [9 E3 D# y! P; E1 {

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

. h/ ^4 m5 f/ H/ i; s4 g十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1477

广告币

1820

积分

高级会员

Rank: 4

积分
1820

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:208 `1 h0 T( `/ T; K/ a
十分感谢!!!非常感谢!!

2 h. ]- J. _8 n; b缺少一个gethtml,用下面这个:- R) A) Q( |5 H  O' f, Z
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    / [; t- f) R* h
  2.         {
    3 Q2 Q3 d8 O# r2 b5 H
  3.             string strWebData = "error";
    $ Q; N: S) g3 k( }+ w3 I0 |; l- `; M
  4.             try$ c! x7 \, A* x$ g3 T9 l, D7 @
  5.             {
    2 y2 y4 ?! y& U/ L
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient $ x0 `8 L: V% y8 G9 ^1 S3 W
  7.                 // 需要注意的:
    3 G& H0 a- f: @- ^( |0 V
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    " S- X1 u! a% W* k9 ^! B
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    0 f3 P' n' h9 ^) V
  10.                 // webclient.Headers.Add("Cookie", cookie);
    2 F, I& m. [  ~/ D7 Y3 t. b% ~1 N
  11.                 //这样可能需要一些重载方法。根据需要写就可以了# _  k% M& E8 b. e' `# ~" t
  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 H8 o7 \+ e9 _1 ]8 Z
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ! G. @  I! O3 l* o
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 / b* J" c. W# D' R
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;! ^( c5 }8 H( K9 ~* W+ W3 c
  16.                 //如果服务器要验证用户名,密码 ; ~  Y# _% A8 T' I3 b6 Y2 W
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    / l/ i' \, C& `2 ]- l
  18.                 //myWebClient.Credentials = mycred;
    / V* P9 C1 @  `3 T7 T
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ) H" f, Y: X( ]5 }0 ^1 l
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);: i. T3 w9 ~/ W
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);/ |  a4 b0 ~" c2 A" J
  22. 6 r; X/ H, t3 p7 M
  23.                 //获取网页字符编码描述信息
    0 @7 z! u; ~7 ]3 p
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);4 [" I" E% E; W6 N$ n
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    2 s, J3 z6 l. {$ a7 a
  26.                 if (charSet == null || charSet == "")
    8 x7 g! G7 z) o0 S
  27.                     charSet = webCharSet;
    ) Q+ y# @9 g' N4 E$ t& T2 G
  28.                 if (charSet.Length > 0)" i/ X$ }9 m/ {/ \- S! p6 G2 w
  29.                 {
    $ s4 k$ ~9 G! }. l, p8 R3 C! a
  30.                     charSet = charSet.Replace(""", "");7 @* B$ u, C8 q! z
  31.                 }
    7 I+ ]5 a4 M$ j. ]* l
  32.                 if (UseUTF8CharSet)" J3 D% I6 F( q. I' W6 p# H- I
  33.                 {
    ! S2 Q7 m$ v1 h' O, X8 t
  34.                     if (charSet == null || charSet.Length == 0)
    % R) \& ?: ?( I: u
  35.                     {
    " @. T) n0 w& A5 s3 Z
  36.                         charSet = "utf-8";& i; S$ }" f4 g$ p# N, x8 q
  37.                     }  h( Y9 g5 |( U4 W
  38.                 }
    ! u. ^% t' V0 t8 l; G3 v' N# k7 Z
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)) g* _. J' d* k0 F7 l
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);* T8 M8 }2 s- z/ a* t! I+ `

  41. 3 R: @* l) L5 O
  42.             }
    % v* _4 q4 o" e' p
  43.             catch (Exception)
    6 V+ ]0 T# `/ x" m6 |! s7 f+ Q
  44.             {; i$ C# E+ Y1 w, ^7 {
  45.                 strWebData = "error";- y6 L; _( G2 [- h
  46.             }
    ) i% `" E- s5 Y8 ^2 [3 @
  47. " O, p. r' S, @3 d. w% ^1 [
  48.             return strWebData;
    % C2 e' i8 S$ K0 W5 L: v. o& p
  49.         }
复制代码
5 m6 E- ]3 S5 Z% I0 {  M! _
; P$ b5 T8 ~2 @$ F7 N
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-30 10:48 , Processed in 0.052987 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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