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充值
各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户IPCola原生住宅IP⚡️$1.8/条双ISPFB海外户、GG老户、TK加白老户
PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多高品质·稳定高速纯净IP FB个号1块一个
TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 
海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9879|回复: 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 抓取全站链接
    ' K' P2 U2 s4 ~) {8 l. O% g+ ]
  2.         public static List<string> GetAllHref(string url), N6 V( D2 z6 N* d5 h# {
  3.         {
    # l& y! s5 ^: G/ q& q0 C  K
  4.             List<string> allHref = new List<string>();6 r- S/ h9 u+ ~4 E" }
  5.             try8 B4 M2 R! v! u6 j$ }  a, m
  6.             {
    ; ~9 r9 f: K% H8 |# O1 C
  7.                 string strhtml = soso.getHtml(url, "", true);- v# X0 h$ q; I: D
  8.                 if (strhtml != "error")
    8 a& o# _( Y$ S3 g) J, g# x
  9.                 {# |* l( c! L7 X
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");0 |# V6 J9 `3 y' w) @
  11.                     MatchCollection mc = reg.Matches(strhtml);
    . W- g# v* R+ Q) ?) n. v! |6 q
  12.                     foreach (Match m in mc)
    ) N! ^, N! `! n( K* t0 a9 R6 u7 K8 t
  13.                     {5 G6 n. x- o7 E3 L
  14.                         Uri uri = new Uri(url);+ k( \# c) s+ l, z
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);8 W# j3 Q; Z( R" D( M( ~
  16.                         string fullUrl = "";- A7 D0 q1 u7 `5 {" E
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    2 y7 k6 q4 j6 @) s3 J
  18.                         {
    ) i% m' U2 }/ y! T& C. `" ^" ?
  19.                             fullUrl = m.Groups["url"].Value;; y& g: m7 K. Q  ^  A) K
  20.                         }) x* d: M9 S/ ]2 r8 d4 s
  21.                         else/ K! Y2 M4 H9 f8 r0 k
  22.                         {# T* [4 S/ a6 n
  23.                             fullUrl = thisUri.ToString();) W% W- X; r# o4 j  o, |
  24.                         }
    1 y+ s. M. Z& u3 D: j1 f
  25.                         allHref.Add(fullUrl);
    & p% P2 h8 @# S* G1 |
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);/ _) h4 Y0 K# M" x  \' |9 D
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    & @% z7 {- @& U3 n
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ) I8 D9 _: ^! L3 z4 o; N' v- I
  29.                         //Console.WriteLine("…………………………………………");, [& i, l4 W- h
  30.                     }5 }5 y8 W' z3 `- a% l( p
  31.                 }/ c# _9 n; S; S0 t
  32.             }- x1 y; y3 \3 R1 A
  33.             catch (Exception ex)& Y3 h' F, L2 I8 Z
  34.             { }6 D/ Y& J$ I0 d& s, J2 ?8 M
  35.             return allHref;
    . j+ R8 ]1 S/ d( i, o+ l/ r7 r
  36.         }' e  m! ^& R( e& t+ N
  37.         #endregion
复制代码
1 G; T: {2 o, r1 Z
0 v$ {0 ^1 u0 R  V; H- B+ x

  1. 3 P4 \+ f0 M' i& R

  2. ; l2 k1 c& k2 Z
  3. - ?5 X' s0 G' H- ?- j
  4. #region 数据去重+ }) X& }) }1 `
  5.         /// <summary>
    & d$ W9 y$ e: C: X
  6.         /// List<string>去重% \2 z/ c/ C. ?* b
  7.         /// </summary>
    $ O" ]4 |. M( s, V. f, l8 D4 }
  8.         /// <param name="list"></param>
    / T' c3 H, q7 g$ R4 W: _
  9.         /// <returns></returns>% [, s$ C; R/ R8 g
  10.         public static List<string> getUnqueList(List<string> list)
    6 }( M: a7 Z% w
  11.         {
    7 K( ^$ L$ Y0 ?: m) |' o' d& _5 h5 F
  12.             List<string> list1 = new List<string>();# \2 n6 A/ a) j) X: ]: k  G$ Y
  13.             Hashtable hash = new Hashtable();) h+ a- I5 P  }8 C4 @- e3 s
  14.             foreach (string s in list)2 [* T; y: r% S' W5 m
  15.             {
    $ ~& t, _( [0 a4 o6 @; S1 ~
  16.                 if (!hash.ContainsKey(s))
    & V: G% W2 P4 R1 q
  17.                 {
    6 c/ B, d# N& v% i# Y
  18.                     hash.Add(s, s);
    9 j. x  U: N0 @
  19.                     list1.Add(s);
    % F0 Z% [# S, \3 @
  20.                 }
    , V& Q) M) m- F- s8 P
  21.             }, k; b' r! |3 X2 g; w
  22.             hash.Clear();% e. ?$ {& y+ f3 ?  `" M, c! I
  23.             hash = null;" c) D$ u# }* R5 Y, G4 f5 t
  24.             return list1;
    & M8 y1 |3 F% S- {4 I# e4 G- V
  25.         }
    6 ^( N% o7 v, P3 e$ e. W
  26.         #endregion
复制代码
. ~. {4 }6 b2 F/ |
3 ]2 ]. G) w% K7 n9 K0 C4 E

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

  r7 u" J1 H+ ]" N5 D$ ^十分感谢!!!非常感谢!!

点评

缺少一个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
7 u- r" ~2 Y! T3 y9 J4 C& B: J: G4 R十分感谢!!!非常感谢!!
& o& }* m2 ]' F
缺少一个gethtml,用下面这个:; L# ?- o4 v" `5 K+ M% ^
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    - q. z8 B0 D& x
  2.         {
    4 ~3 T  k3 Y: S9 g. H
  3.             string strWebData = "error";% L5 a* c5 }% g2 e
  4.             try
    4 j! Y' z  J& ?$ t9 v9 c0 o
  5.             {" r- e/ u% _. z# r& S( G
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient . [0 N5 v; \* b
  7.                 // 需要注意的:
    9 p8 ~6 \+ Q( d  w+ n- u2 q" J
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 9 m3 ], d5 n% u) y7 P9 v3 f8 v' l* k! M
  9.                 //这是就要具体问题具体分析比如在头部加入cookie 8 ~- V5 B/ U2 c3 b
  10.                 // webclient.Headers.Add("Cookie", cookie); 2 v: g- Y* i, A5 k2 A
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ) H% ~* g' H# z: t1 e% l+ l" m
  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)");- G4 \$ b; N- R; j' A
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    * S* X. _: M  q( h3 u4 d
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 ! U0 r3 F* ?. c! Y2 o! P$ N
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;; t. ?- B4 r: Z% i" ]3 T
  16.                 //如果服务器要验证用户名,密码
    $ c$ e& |+ S  _9 n' z* E% R0 @) Q
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    + B# n" b6 ^5 @6 M; n3 k# N& Y
  18.                 //myWebClient.Credentials = mycred; 8 s$ x8 z9 a& d! Z
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ( j& q2 _1 v0 ^9 C$ l2 }
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    ' O$ M% ~- h/ k5 g" B9 {
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ( H' \6 W+ O: f2 @5 b3 I

  22. 1 [* t7 y- }7 g0 N( {& h- ?1 c
  23.                 //获取网页字符编码描述信息 4 T8 j7 S7 f, ?) d
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);3 P8 q+ r" D) X" Z- u$ W7 h2 @/ T
  25.                 string webCharSet = charSetMatch.Groups[2].Value;( N& g8 Y, P9 v8 F9 m
  26.                 if (charSet == null || charSet == "")$ G, n" P: q8 |# p: {7 Q. K4 H
  27.                     charSet = webCharSet;. K! N  B0 ~9 ?& h1 a2 U  T
  28.                 if (charSet.Length > 0)
    2 X0 c" R" [5 e1 |. j' a
  29.                 {
    . F4 y: x+ d7 O$ V
  30.                     charSet = charSet.Replace(""", "");
    6 M( d( T( P7 Y0 F2 o% @  q
  31.                 }& e8 h# J/ @; [  B
  32.                 if (UseUTF8CharSet)
    : @) Y9 ?# }, ]8 M  {
  33.                 {
    ( `: `% j# L3 C1 V& E, ?* Y
  34.                     if (charSet == null || charSet.Length == 0)
    . _0 I2 B+ I* W* j+ U4 E) v
  35.                     {
    6 [- t0 D9 Z+ H! D4 I4 v% B
  36.                         charSet = "utf-8";
    - H5 F4 v0 _* G9 \$ e
  37.                     }* p  r8 L8 X1 e+ ?0 s: w
  38.                 }
    5 g5 Y7 o* j% \, W5 K: E
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default), Y( k/ J, T# d9 a; {3 Y0 y& q
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);* g3 S6 D  A7 s  W+ F
  41. , t! \5 I3 g" d# s0 C) j
  42.             }
    ( D- g* c5 Q8 U2 ?' X4 Z' }
  43.             catch (Exception)
    ' {. X+ }' k3 M* N
  44.             {
    + A. f5 y, z. r! P; {
  45.                 strWebData = "error";
    / |* B; d5 i$ K2 l5 K& {
  46.             }* A3 s! _5 c4 U8 d: B) H+ ~

  47. / p9 W1 Q/ g% E$ K3 }
  48.             return strWebData;( H4 ?6 c" p% C
  49.         }
复制代码
9 S* }0 M" r: h, ?* ?. _* {  @' s
1 T' t9 B$ z' g7 I
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-20 23:57 , Processed in 0.053981 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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