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+ 地区GG,FB,TK, 欧美源头, 欢迎合作跨境债务催收/风险代理
高权重Google老户[卖户+筛户等级] 海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9908|回复: 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 抓取全站链接2 ]; u( s* @8 Q* D! L8 s) W' U0 B
  2.         public static List<string> GetAllHref(string url)
    6 N* a( ]: x( u; a& X8 Y
  3.         {
    ! k4 o$ O8 E& X! h: u
  4.             List<string> allHref = new List<string>();% G6 h; `; J& u
  5.             try! I0 A# c* E  F% c  b
  6.             {
    ; w; k* N8 k+ D4 K6 b2 ^
  7.                 string strhtml = soso.getHtml(url, "", true);
    1 `. o3 u% ~4 _5 h2 A* P( l6 d
  8.                 if (strhtml != "error")
    - j  v6 D+ q9 g9 _' n2 R- A
  9.                 {
    : }* z6 _) J7 [# g
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");% `0 A1 b' `" \) s1 q1 @
  11.                     MatchCollection mc = reg.Matches(strhtml);6 o2 u' G; e- p* ?
  12.                     foreach (Match m in mc)+ b5 Q( _4 {8 X* Z# J1 g
  13.                     {
    ! l9 i1 H" Y" d
  14.                         Uri uri = new Uri(url);
    ! G7 U# W* h9 B. _8 D3 |! t8 i
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);1 C4 K+ }/ E) g& O% V6 X; N) Y
  16.                         string fullUrl = "";
    * ?4 Z+ \( E3 S; i+ ]# V
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    - a/ \% S. p: h7 D- Q. P
  18.                         {) @& G* W* e  H0 w
  19.                             fullUrl = m.Groups["url"].Value;
    % Q9 n. Z" v, r4 X- I+ e& u' H
  20.                         }- w1 f! l9 ?! `: ?: O, @
  21.                         else
    + d$ o' \- n: Z: |; i% S4 f3 m
  22.                         {
    " a9 H% P# e) y( R( H, H
  23.                             fullUrl = thisUri.ToString();# l. @5 M  S$ ?( z0 N, g
  24.                         }3 o+ Q- S' n$ l' h" b; r
  25.                         allHref.Add(fullUrl);
      q2 |/ Q5 s# K& {+ H3 B" ^: w* a
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);; N5 e0 Q) D& `7 ?' u; ^
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ' j- W5 O) [$ @( ~3 J; Z
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    1 s( J! g1 l& p! y
  29.                         //Console.WriteLine("…………………………………………");( ]2 a4 A8 ]% l& ]
  30.                     }3 d  d# N* a1 D  f3 w. ~
  31.                 }
    + `0 q2 H  M9 B! }- z0 D
  32.             }$ P8 o! m$ d* D
  33.             catch (Exception ex)' ?  ?9 R3 Y6 C- h2 w
  34.             { }% R- w2 k' G6 g$ M$ K8 G* Q
  35.             return allHref;
    " N3 o; A/ S* Q7 X3 y
  36.         }$ `/ i' r  s0 I/ Q8 X, p
  37.         #endregion
复制代码
5 \1 J/ e" }5 d: U2 b+ d

2 ?  c# t; `+ q6 K9 g

  1. ! T5 ~& P1 T0 h+ e3 Q
  2. ! f# y+ a# a. u
  3. ( y) _. J8 R& E# M7 ~
  4. #region 数据去重/ m* L3 x& W* h0 x" x9 B8 j7 _
  5.         /// <summary>
    $ R1 @1 q& X' ^: k
  6.         /// List<string>去重2 \9 i- z/ q, S
  7.         /// </summary>
    . v( O/ X9 D$ {, P% B
  8.         /// <param name="list"></param>
    % K. E, S2 c! B$ V; E( f! _: `8 c
  9.         /// <returns></returns>7 b) g  m0 d. d$ ?! ?
  10.         public static List<string> getUnqueList(List<string> list)1 @8 f" w/ D: K5 f0 e8 |0 |. m
  11.         {7 S* b2 I- R4 W+ W$ ~
  12.             List<string> list1 = new List<string>();
    * \$ F7 j+ J  m; v; o$ w
  13.             Hashtable hash = new Hashtable();# y5 O; q5 E) R( j. c/ w1 V- A
  14.             foreach (string s in list)0 t; s  i% g: J( q2 a& F0 g) r" j
  15.             {
    : @' M! Y# r0 m2 {% B5 k6 W5 a
  16.                 if (!hash.ContainsKey(s))
    + g# E; o3 C1 [; N) G& ^' P
  17.                 {4 B4 [: O+ z' |, U
  18.                     hash.Add(s, s);
    - I. U) U8 U- E; K  r
  19.                     list1.Add(s);
    6 t$ O$ ]. @) S5 M
  20.                 }+ n! O( a! ?5 h4 z
  21.             }. K1 Q  h2 c* O6 h- I) J4 s
  22.             hash.Clear();
    2 \9 A1 t4 R, l5 Y! Z
  23.             hash = null;
    9 \& S  f+ n  y- O  g; Z
  24.             return list1;
    + `  ]: ]9 N* K4 o+ h1 W" g8 l
  25.         }
    . g' m  {$ g3 q! ^
  26.         #endregion
复制代码

/ O  W; {6 T9 j4 B) }) V3 s% c) }/ U# ]; S. D% @0 D; d

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
' F5 f7 K6 K8 N8 H
十分感谢!!!非常感谢!!

点评

缺少一个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
4 |" \0 r, s+ H- T) y十分感谢!!!非常感谢!!
7 p! ], p6 {# z" A
缺少一个gethtml,用下面这个:
0 A# ^% \$ @2 W% E2 N5 U0 Z% H2 i
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    . ?; K0 |0 [& k
  2.         {* }0 d0 \) l8 G2 }" L' X. Y
  3.             string strWebData = "error";+ p" k1 {( p' E& L# s9 L( T$ W
  4.             try
    # |" G# [0 s1 G9 y
  5.             {* u. B% O4 S! E1 I' Y
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient . O4 j* E- E* ~4 \7 Z
  7.                 // 需要注意的:
    " q6 g% Y9 u0 I" r6 y% P
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    3 f0 X: R* y9 S7 w$ x
  9.                 //这是就要具体问题具体分析比如在头部加入cookie * [/ A6 Z  M" K* [3 w# L: K4 A
  10.                 // webclient.Headers.Add("Cookie", cookie); 1 J) `- |" R) c% [2 x& l2 ]' a
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ) i3 X! h0 O3 ^; T: y. 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)");5 i% l+ W7 R) Z7 X
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    1 }! k" a. q2 O' @( k0 ?6 R
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    # b' K) ^% E; C1 {* M: \
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    # y* u5 A7 D; |
  16.                 //如果服务器要验证用户名,密码
    % c: ~+ g; a0 q4 S
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); / ?; J7 u; Y$ v3 Y9 b
  18.                 //myWebClient.Credentials = mycred;   z1 ~/ Z- |  ~; S. \4 |( W# L' w
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) : N- N) o! e: s
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);: `. ]* v9 k% z, {8 o9 q& N
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    : O( n% m9 g, f* J% y' e) K$ ?
  22. . p$ T% Q1 R. e; |0 m3 v3 ?' t8 [3 h6 T- [/ R
  23.                 //获取网页字符编码描述信息 7 w( d6 l# K- W4 V- C6 |" M
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    ) @# L1 d. J8 X0 j% z6 M3 I0 n1 r
  25.                 string webCharSet = charSetMatch.Groups[2].Value;' o' x" r: B' F2 R, [
  26.                 if (charSet == null || charSet == "")( \1 F0 k4 k# A* \
  27.                     charSet = webCharSet;5 A0 I& w$ s$ R% @
  28.                 if (charSet.Length > 0)- Z  v+ d, w7 ~- `: u) t- n% d
  29.                 {
    9 i# O1 r" B" `* {% B
  30.                     charSet = charSet.Replace(""", "");
    / P3 {- D4 O* |4 [
  31.                 }4 N3 Q1 }- z- n$ m7 J
  32.                 if (UseUTF8CharSet)6 Q) U, s9 o, f5 |
  33.                 {: F0 b$ m1 v/ [! {# {
  34.                     if (charSet == null || charSet.Length == 0)' x, {7 g3 V9 D
  35.                     {" s% e' D8 `7 ^! y7 t) f* J6 @. g' ?
  36.                         charSet = "utf-8";
    - T7 x* q% w2 b( R% D8 q% `
  37.                     }2 f* M2 M1 }$ ?
  38.                 }! @/ D* G( n# F. R8 A8 ~
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    ; E. m. n5 C" N5 _/ y
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
      F2 ]; Q1 T2 |$ @7 R

  41. 0 h2 s+ ?- d3 V) {
  42.             }
    7 U3 S1 ^4 \7 w8 K8 I  h2 [, S0 u( m* E
  43.             catch (Exception)
    ( x1 i$ ?7 j1 c: j1 d
  44.             {
    , i7 u% b) }& p1 s  r5 h
  45.                 strWebData = "error";
    ( ^/ Z4 p  ?9 [
  46.             }3 S% d0 r5 K3 a  Q, ^! P4 ^2 G4 T3 e

  47. 3 D' N$ R# n$ A
  48.             return strWebData;* U: R+ y, S3 O
  49.         }
复制代码

6 j+ t" [5 C3 u3 ?7 Y( e1 Q$ E) X5 r2 x! M
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-24 05:40 , Processed in 0.060064 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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