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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9770|回复: 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 抓取全站链接6 R. G5 B3 p8 q/ R5 o
  2.         public static List<string> GetAllHref(string url)
    ( x4 |2 s6 B# u+ Y; z( W" }
  3.         {
    7 r8 w/ a# |% A; p
  4.             List<string> allHref = new List<string>();1 j( e: \; q8 M$ \$ J" A
  5.             try$ n- a. ]3 H" g$ H8 n
  6.             {6 A! _# B  g6 Y3 ]! \1 u; j
  7.                 string strhtml = soso.getHtml(url, "", true);4 Z# Y0 J# @1 k: R
  8.                 if (strhtml != "error")! B+ O7 \  f7 V9 o6 W
  9.                 {% n1 T2 @* O3 K; z
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    # V( v; I9 [1 J" S
  11.                     MatchCollection mc = reg.Matches(strhtml);
    7 a( M" X1 x! N0 n" n1 |
  12.                     foreach (Match m in mc)3 g: h! H: A. J1 A" k
  13.                     {* M6 g3 Z' O& A# U! Y4 \5 @5 A
  14.                         Uri uri = new Uri(url);
    7 ]7 H& K3 {6 [! ]: c6 ?% D
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);7 P( k  D. r5 {2 M2 s& W6 P& L- e9 ]
  16.                         string fullUrl = "";
    1 K- @: {/ G2 U9 G' I
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    4 t2 g* E# M* s
  18.                         {
    - R. E8 @/ }4 H5 x0 g* u. g; Y
  19.                             fullUrl = m.Groups["url"].Value;- x2 l8 N9 a/ h( x" F3 V
  20.                         }9 |$ u6 T" f/ Y8 a( n: G( l
  21.                         else
    . c) l/ h3 w* i( ?3 S
  22.                         {
    & t# C$ G, ~* T+ J& K# M# Z9 Q
  23.                             fullUrl = thisUri.ToString();2 y' x* F& r% _# c2 L, J
  24.                         }
    ) B& x& w" j" ?- P
  25.                         allHref.Add(fullUrl);& ]. L4 Y$ Z3 H) y  X) w
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);0 W* s( H9 A6 L) Y" w+ B; n
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);0 m2 @1 }3 J7 n7 o; Q7 C7 r
  28.                         //Console.WriteLine("补全链接:" + fullUrl);* Y( x+ [, ?; d/ R/ X  Y
  29.                         //Console.WriteLine("…………………………………………");  {# k5 F! v( C9 B. h: ]
  30.                     }, G( w8 X: n# Z% w6 i+ L5 _: G
  31.                 }5 q# O7 d, F% L% O7 D- _9 K
  32.             }5 Q0 @1 t* j  B& ^, ~
  33.             catch (Exception ex)
    9 k4 U/ v1 u  t2 U3 E: d
  34.             { }" l3 ^# }9 A+ o! b
  35.             return allHref;/ V6 B6 e4 U* `0 h" ^
  36.         }
    , A8 S1 b7 P$ p( B6 h8 E5 q6 E" G) O
  37.         #endregion
复制代码
+ s: X& D1 \4 w. X) t; S. F& K3 J
8 V& W! p& q% g

  1.   b6 G4 f9 Y( j# M4 J- b
  2. 4 g( a8 |2 c; a( c1 ~$ e: U9 w
  3. + x5 r$ E# a1 m* B- @8 A& L. o# O9 h
  4. #region 数据去重8 G" X" S0 ^# t" _4 B; w( C
  5.         /// <summary>( L. x/ j6 x/ \) l
  6.         /// List<string>去重' ?5 q/ r3 w0 e* H- F% e
  7.         /// </summary>
    0 k* `6 M% M. u
  8.         /// <param name="list"></param>
    ' ]+ c0 M: K/ W; N3 E; Q# i2 l
  9.         /// <returns></returns>& @, T: ]" M) U4 n9 G0 J
  10.         public static List<string> getUnqueList(List<string> list)
    ( Q% V$ p  t( P9 g! U) t
  11.         {
    7 Z' f; F; F9 i2 U& A
  12.             List<string> list1 = new List<string>();7 v4 _- p1 x' d" [7 j  H
  13.             Hashtable hash = new Hashtable();8 q& s5 i  m4 m, o$ J* q. I
  14.             foreach (string s in list)
    8 s7 b% u' y" `! X
  15.             {
    + c. h# g) D3 s, [, r# f+ m
  16.                 if (!hash.ContainsKey(s))6 b; a% h7 a6 D: j6 x6 O/ s  A
  17.                 {
    % d8 ^2 [0 X$ Z8 b7 E) u" ~- a
  18.                     hash.Add(s, s);
    ' L6 k, ~# V" Z7 d9 ]6 W: Q
  19.                     list1.Add(s);# V# |  m- m  _/ ?2 y2 C5 ~+ V; [
  20.                 }
    % z+ y: T% ?% J- M) D3 n) A
  21.             }
    7 G" t8 Q$ O* F8 w
  22.             hash.Clear();
    / z' B7 j2 D# X5 l; \
  23.             hash = null;8 w$ w/ A( H% [, X# {0 p
  24.             return list1;
    4 G+ |1 w4 j1 x
  25.         }
    3 D' H7 o; x0 O
  26.         #endregion
复制代码
, d( l) H" n/ B, ~2 L/ w/ F
! w: v+ k9 e5 ~5 ~

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
8 s6 `0 X; U% l) m* L! y$ l7 M
十分感谢!!!非常感谢!!

点评

缺少一个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
* r: A% ^) |1 {7 @5 P7 T十分感谢!!!非常感谢!!

% s2 Y1 k% B) i. K9 ?6 V缺少一个gethtml,用下面这个:
' A/ I; z6 u& I, o: _
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    / H* m+ D4 H5 b% v7 j3 b
  2.         {$ T% q" }$ Z0 ^% J$ Z# D
  3.             string strWebData = "error";7 o& `2 _0 C: T' J! K
  4.             try1 w  s3 [; T8 N& ]1 J/ p4 H$ s
  5.             {. }2 z) d5 L+ x$ N8 @# N, H* Y) G! O6 B
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ) L7 e% Y1 Q$ O/ B: v$ ~8 A
  7.                 // 需要注意的:
    ) w7 o4 u$ t' m3 z  N
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 5 x. M0 N& R0 W3 u/ G) o4 a
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    6 Z* I9 R% i+ B. q$ @
  10.                 // webclient.Headers.Add("Cookie", cookie);
    7 t: P' L5 C" K( e- c
  11.                 //这样可能需要一些重载方法。根据需要写就可以了; R5 ]! j+ N1 |+ G. k
  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)");
    ! N" M, [- }: s) f
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    5 ]( N8 _& Q, w; [$ j9 z
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ! [, z% }# Q9 ~
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;* T% {7 E6 |: n. u& P
  16.                 //如果服务器要验证用户名,密码
    , G5 e" }! \0 ^( Y/ h
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    " Y3 T$ n; J( D! u( F- k" Q" y# b
  18.                 //myWebClient.Credentials = mycred;
    ( _! R9 [: h& x& Y  R$ Q
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) $ [1 J8 [, [8 l  V
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    / d5 {& v! E4 T9 O7 F
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ' _+ @9 ~1 q6 j8 _/ {

  22. $ s) B, ?. z% ^3 L- x& ?# ^
  23.                 //获取网页字符编码描述信息
    * m1 ~5 ~8 k! L
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);% j# A2 ]3 V/ l* b* I, Z. j
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    9 w: E( I: Q8 O0 A  Y* p6 R
  26.                 if (charSet == null || charSet == "")
    : e. Y7 D% K6 M! x& `( X
  27.                     charSet = webCharSet;
    0 V) K2 W/ m" z7 }! U! l3 |
  28.                 if (charSet.Length > 0)
    . }( ]' B' p; ]* R* b8 ~0 G
  29.                 {4 P) L; d. j1 ~+ B/ t+ F9 ?$ B% \- J, S
  30.                     charSet = charSet.Replace(""", "");
    9 x. K" C* Z/ H. D+ F
  31.                 }
    , U9 D4 m% s' \5 v5 V- i- Q
  32.                 if (UseUTF8CharSet)
    0 \4 [, b4 V6 _, G6 ?4 L+ R
  33.                 {
    5 v# V7 y: q; v- f8 {
  34.                     if (charSet == null || charSet.Length == 0)9 G2 l: r* m) A- n
  35.                     {- [. Q! e, E) U! m) T
  36.                         charSet = "utf-8";) G- k% u6 [. ^
  37.                     }
    0 e4 U9 o4 g% A3 i
  38.                 }3 o) r8 i7 A5 c' E# H! J
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    0 ~; M: @0 q# l) G. |0 B# W; |
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    3 H6 c7 l# `# g
  41. ! c- j/ k8 Q, `3 Z6 [
  42.             }/ q! [- q) @0 M0 X. ]( d+ g! V7 q, T
  43.             catch (Exception)" W( H$ Z+ a, `" x
  44.             {
    2 U" A" Z& k5 `" v1 w
  45.                 strWebData = "error";' a, U; r8 \3 m: E. v& {
  46.             }
    ' K+ S* o) }6 W# U  b

  47. ; q. }( _8 e3 O+ N  N0 K
  48.             return strWebData;/ l/ w: q( g( b. q/ M- [
  49.         }
复制代码

& X! a3 V8 j: Q( a( ^
$ b$ B9 C) b3 C0 R
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 21:56 , Processed in 0.050185 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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