AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
⚡️AdsPower:安全不封号,高效自动化广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️Mediabuy⚡️玩家开户首选
【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️Taboola/Outbrain /Bing⚡️一级代理
开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放FB BM不限额,短id账单户
E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN
7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值Facebook 批量上广告
尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)
⚡️TikTok企业户,bm户,账单户FB企业户,TT老户,GG老户源头海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
PTM虚拟卡[OPENAI+全场景通用]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量->Tyver SPY汇聚海量广告创意
高质量代理⚡️住宅⚡️移动广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9645|回复: 7

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

[复制链接]

36

主题

194

广告币

279

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1474

广告币

1817

积分

高级会员

Rank: 4

积分
1817

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    6 g& p) x. w: D" [' l6 X
  2.         public static List<string> GetAllHref(string url)8 z* P8 V: `- b0 p/ t2 p9 X
  3.         {1 [2 ]4 c3 K1 S( c+ ?5 e
  4.             List<string> allHref = new List<string>();
    9 ^4 |4 h! v" _1 A% Z; I/ Y. L4 ^
  5.             try0 s, Q8 M* T! V2 K
  6.             {
    ; ~6 r1 ]2 u. d* t& F
  7.                 string strhtml = soso.getHtml(url, "", true);
    8 ^* S; A4 E/ z/ C
  8.                 if (strhtml != "error")" i. Z6 {2 K; b
  9.                 {
    $ }, w9 L' \) O, I, Q; `' N
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ( `1 r) G$ Y8 a9 e9 O* c
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ; R$ {* q0 a+ ]1 K6 M5 N& Y2 ?* Q
  12.                     foreach (Match m in mc)
    7 P" H% M3 @2 U: W+ g2 G! S' ~3 q
  13.                     {- T( H! c- w9 X. i3 T
  14.                         Uri uri = new Uri(url);
    ( G, T& M$ w8 V; F9 P1 q4 ?6 L0 w& ?- S
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);: @4 Y& B" O$ I7 Z6 y  A
  16.                         string fullUrl = "";
    9 g) w  W$ a9 m" ]
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    & r* e# {; m3 l3 w* a% y5 I
  18.                         {
    3 Z! C* s' P& i" Q% `3 [" y
  19.                             fullUrl = m.Groups["url"].Value;
      [  Q3 z' m# q0 d- y2 `& I
  20.                         }$ Y( _7 J. c& h. O4 `
  21.                         else3 t* \: x" F. _4 H2 N: `' ?
  22.                         {
    3 ?" Q$ Q, Q2 Q. ^; ]1 j
  23.                             fullUrl = thisUri.ToString();
    2 D# ^; B& Z$ X5 Z- n
  24.                         }
      S. v' k! ~2 @& d
  25.                         allHref.Add(fullUrl);
    # D9 l; B( Z$ j
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);2 {1 h1 \3 E& i: X, p" {6 T
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    + u( Y2 Z  Y9 R/ i9 s
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    # m" v$ z9 X+ V' q; P
  29.                         //Console.WriteLine("…………………………………………");
      D- w' ~" R. b4 X
  30.                     }8 {& e5 E" w9 y* y/ Q
  31.                 }* D5 x/ w6 J5 ^
  32.             }: g$ C; z( ?0 n( ^& O
  33.             catch (Exception ex)
    2 I# {% p8 C  t3 Z' J, F1 M7 j- x
  34.             { }
    5 z9 j2 }+ t  p" `9 z! `  \- A  B
  35.             return allHref;
    * ~" i. E0 z% E% M
  36.         }4 U& K( m0 o! {% C# F6 q
  37.         #endregion
复制代码

# [4 m8 Z- t. O" ]+ w8 B" o! k7 o$ c* P! J# d% P* K( A
  1. ' i% _" T8 o' e+ m7 e
  2. / q0 _1 f: w7 [+ L; v' e

  3. 9 e( |5 H! @) x8 t, C( `1 @
  4. #region 数据去重) S) C% i4 }7 x8 u4 _
  5.         /// <summary>) u' o$ _; Y- e6 K4 u9 N; y
  6.         /// List<string>去重
    : _+ y+ Z7 X8 s4 P
  7.         /// </summary>/ o. X8 n# ~* ?, `
  8.         /// <param name="list"></param>7 f/ }  f/ B6 H9 L4 M0 W
  9.         /// <returns></returns>
    0 g2 {; X( D' x, o
  10.         public static List<string> getUnqueList(List<string> list)& w' U, |% X1 e! U3 Y
  11.         {2 j% N; l$ I! x( I/ V
  12.             List<string> list1 = new List<string>();% M$ g, d# r4 w8 G: {! r
  13.             Hashtable hash = new Hashtable();# R' D7 ]) w/ ^0 F5 m) ^
  14.             foreach (string s in list)
    , j1 \! }" l9 D
  15.             {, i2 u6 X2 F  v& M/ F
  16.                 if (!hash.ContainsKey(s))
    # i6 V- ]3 q  F' h  g. Z
  17.                 {
    * C" W  H* c0 b0 t
  18.                     hash.Add(s, s);
    ' h9 j0 s# ^) p! m# o0 [
  19.                     list1.Add(s);# F( A6 X1 x7 V1 {- U  x
  20.                 }) E" K  M; N; a/ M3 |
  21.             }
    * ^4 q- h$ g# {) Z$ f
  22.             hash.Clear();
    # S, q8 x. u% B1 \
  23.             hash = null;5 M# _" @7 x  N& z" A' x
  24.             return list1;
    : b: x; O8 W5 A! k( _
  25.         }- I4 W, ~, C0 J: T: Q
  26.         #endregion
复制代码
5 j. e0 U7 d, w, a' i! c6 l' w

" n6 s2 T9 b. T6 i( A7 @: N! X

点评

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

使用道具 举报

36

主题

194

广告币

279

积分

初级会员

Rank: 2

积分
279
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
8 ~4 H3 A. a+ z. W0 _( J, t
十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1474

广告币

1817

积分

高级会员

Rank: 4

积分
1817

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:204 B, F1 L! M/ w8 J
十分感谢!!!非常感谢!!

- y" e6 h3 U$ q( x) U, Y( K+ u1 h0 s缺少一个gethtml,用下面这个:
- x2 t: C  v3 `4 o+ l, f2 Y
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    4 m; b2 A, j% j9 H
  2.         {; E; y1 h! v9 I9 G3 [) B! L9 M
  3.             string strWebData = "error";7 l, C+ q7 ?& M7 q  X8 J  Q
  4.             try  p  X7 m9 E# N$ K, j
  5.             {4 i7 ]/ T; o. t1 n  {( @. |9 u* r: x; S
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    % |% c/ `3 e9 S" x) o
  7.                 // 需要注意的: * k6 I# i" w' b; _% _
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 / k4 \% z* G' _) @# e5 Y& n
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    7 Q& P7 n9 R% k6 W' `& g
  10.                 // webclient.Headers.Add("Cookie", cookie);
    8 q6 X$ Q3 G& `% ^; L" r
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    , D  h+ j. q5 E- ?. N* L
  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)");
    - Q9 R0 n1 m1 _+ A( q* }
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    . M+ O! `1 B- b: C5 w
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 6 K: q* t7 u0 n3 Y, t
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    4 B( g: x4 A+ H3 o
  16.                 //如果服务器要验证用户名,密码 3 t6 {; s& H" L* @
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    * J# g& D; _' k- C; e& a
  18.                 //myWebClient.Credentials = mycred; , O- e4 @. Q7 C4 \+ X# @
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) " R  [' d6 I' u7 ?# j
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);& K: n+ p; r* ?# y! B1 y
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    0 @) }* d8 v% i# \8 y; k8 _; A
  22. 8 N* _  H+ m7 `" d6 f3 E9 \5 A+ N1 [
  23.                 //获取网页字符编码描述信息
    : s0 b! p3 E. `- j
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);8 M3 w. r- b5 p7 T; n
  25.                 string webCharSet = charSetMatch.Groups[2].Value;! X% v+ W+ N  k! t6 R, y- }
  26.                 if (charSet == null || charSet == "")
    $ a$ Y7 ?( f8 p8 X6 r5 w1 n$ e% G
  27.                     charSet = webCharSet;
    1 e) r& X/ f4 J2 c* T6 K* C
  28.                 if (charSet.Length > 0)
    * `/ U# Q: Z; t6 ]. y
  29.                 {
    # V! I& }4 Q" L
  30.                     charSet = charSet.Replace(""", "");
    1 `% p; |* s6 `( x( u, R5 V$ v
  31.                 }
    - S2 n- T, r9 X- @
  32.                 if (UseUTF8CharSet), F) f( _: ?( Q4 Z: O
  33.                 {
    , h/ o5 Q3 ~# B- z
  34.                     if (charSet == null || charSet.Length == 0)9 b4 z# b- Q/ y* @# \
  35.                     {
    ; }! F! `2 e) x# Y3 g3 ^
  36.                         charSet = "utf-8";' r7 x- e+ J; I8 l3 P, J* O& a
  37.                     }
    : K8 _7 @" t+ R. G! U" Q9 s. ]
  38.                 }6 Z! _! o7 ?$ E7 o  Z% k
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)1 X8 f) |* Y/ P5 w3 h) X
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    8 E+ h" x7 t& \3 \
  41. ) M. r% v. M' p" `/ s3 |
  42.             }$ Z$ m; U* q' T7 y# p3 T
  43.             catch (Exception)
    3 B1 n# q# t0 C; X' r1 y
  44.             {. @3 [1 z' u. |$ ^
  45.                 strWebData = "error";9 A0 `! s3 I& x1 R5 H4 o
  46.             }
    , D! J! x# @$ J6 `2 o5 P
  47. ' P" \: Q+ r# i6 [
  48.             return strWebData;
    6 M3 _+ _0 I7 w& I
  49.         }
复制代码

3 q- n+ r- ^5 I! U9 P( b" M8 O: Y# J; x
- u  @; e9 P- P9 `/ F
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-4 06:11 , Processed in 0.051778 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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