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%,国内持牌机构  
查看: 9758|回复: 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 y. H9 T- w7 g+ _% l
  2.         public static List<string> GetAllHref(string url)) W4 Q# K* x! \2 i/ f  }
  3.         {4 O% Q+ F" c0 g9 ?; X8 r* U
  4.             List<string> allHref = new List<string>();
    : H$ d; n1 l. e! @. Y+ i
  5.             try
    ' {( O% k8 R$ @, m) D* k8 C' m
  6.             {
    5 L# ]2 V5 f* I: f% E
  7.                 string strhtml = soso.getHtml(url, "", true);0 ~; l8 X, q- Z1 e' G
  8.                 if (strhtml != "error")3 Y9 l  k" U: P& I  n3 [
  9.                 {5 V/ z, M$ r& U6 [& h. Q  K
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    - K- S+ X7 [+ j! F& ^
  11.                     MatchCollection mc = reg.Matches(strhtml);
    1 b. C6 T8 x6 S$ ]6 t* \
  12.                     foreach (Match m in mc)/ f* |4 l/ R' W) B8 T# B
  13.                     {" C) D9 f/ J  q8 v
  14.                         Uri uri = new Uri(url);& s/ u1 G) a, `1 y) P, o4 J, S/ x
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);% N4 _: |  r7 z* n1 L/ ]
  16.                         string fullUrl = "";
    ! M- T8 G- A4 o  J/ T" N. r
  17.                         if (m.Groups["url"].Value.StartsWith("http")): A7 L/ D  F: L# }( L/ E! n
  18.                         {
    . `$ C8 k' X! b( ]) P* {
  19.                             fullUrl = m.Groups["url"].Value;4 p7 g+ d9 {! R, y
  20.                         }/ |0 ~9 ]2 g! T+ S
  21.                         else- P. Z# N5 x6 R; _6 G5 a) g0 s  h5 [
  22.                         {
    ( _; }4 |, x  ], M  Q: z
  23.                             fullUrl = thisUri.ToString();
    $ M7 u7 k5 n; r  s$ l# C+ v
  24.                         }
    5 E9 v) C- q0 M8 Y0 T+ m7 X' n
  25.                         allHref.Add(fullUrl);# a& \) Y0 B! o+ V6 B2 J
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    : G" r  k( _) @* p6 \
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    : d  Q* @' a, i  J( a8 H
  28.                         //Console.WriteLine("补全链接:" + fullUrl);8 ?( \2 c" }$ m! X
  29.                         //Console.WriteLine("…………………………………………");
    / B2 M/ W! h+ G- C+ _
  30.                     }
    ) l- I0 X% N" e# W' V' M% Y
  31.                 }. A! C& H: ^9 X1 p# T3 d: V
  32.             }8 d9 Z( G+ s- Q9 |. Y
  33.             catch (Exception ex)
    - e7 \% @' Z: S; i9 Q4 s
  34.             { }+ I8 D4 C( P% [1 Q! X
  35.             return allHref;7 n1 N" S) q; N. x
  36.         }
    2 g7 X1 _$ p* s* P. k( ~3 f
  37.         #endregion
复制代码
5 y/ W) O4 ^# O- _+ L4 S( Z
4 ]2 q. i/ z0 p, [2 ^+ H5 _1 ?
  1. 7 ~1 Z0 V$ N+ f0 {$ I
  2. ( W! j3 h0 X- @5 e* c9 V; S* Y

  3.   ?, v' ~/ N! r1 ^  B4 r
  4. #region 数据去重
    7 D$ c. W7 W1 j; ?
  5.         /// <summary>! Z, c2 P; f( R8 \3 `% N) {
  6.         /// List<string>去重  u3 x9 d# s( ^8 c
  7.         /// </summary>1 G% D6 C0 a. p) S0 h
  8.         /// <param name="list"></param>
    " a( ?4 x7 p. c7 Z2 f* S* h/ c
  9.         /// <returns></returns>
      e5 l. B2 N  n
  10.         public static List<string> getUnqueList(List<string> list)% j+ }( ?7 b) U1 ^9 y: E1 r
  11.         {( p& s! M5 `9 G. n& N# F# {* ]
  12.             List<string> list1 = new List<string>();+ }8 w6 L! Y$ `
  13.             Hashtable hash = new Hashtable();' m7 ~. A+ Q5 K( y
  14.             foreach (string s in list)" ~7 Q7 I$ ]: l" V3 [
  15.             {# i3 j( }2 t6 I, b( B6 g
  16.                 if (!hash.ContainsKey(s))2 W# @0 [* G. B
  17.                 {  ]4 {1 z! f$ _: p- K
  18.                     hash.Add(s, s);
    ( K$ G/ f, @# q2 T+ C" u
  19.                     list1.Add(s);2 v# s  @* H* V% I
  20.                 }3 u  B5 B- Y" Q7 V" h3 S0 Z
  21.             }
    2 ]$ |  X8 H# N( P/ t, A# U; S
  22.             hash.Clear();
    5 A* [# t5 X5 `
  23.             hash = null;& p; T* W, a: |- W8 W" y3 u
  24.             return list1;
    / @) z' [6 {2 [) ]2 y4 O; d5 X3 S
  25.         }/ a3 W# p" X5 }' ^5 e" V- \
  26.         #endregion
复制代码
1 k% W* Q% V9 a8 }3 u5 w1 e4 Q: Q
5 ]" F: j* O% S$ p# n' F& R

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

6 x, _/ l* E. \" t十分感谢!!!非常感谢!!

点评

缺少一个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
9 L2 U3 \4 Z* P  z4 H十分感谢!!!非常感谢!!
, V: c6 U+ ]0 }: L$ G; W
缺少一个gethtml,用下面这个:
3 N3 Z: ]6 P& l1 Z
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 9 A8 E6 Y$ ^: N: I. i
  2.         {# j# W* U1 d. h# V* A% @3 m
  3.             string strWebData = "error";
    9 l# V7 \' f6 J1 q$ F0 h
  4.             try" ~* ?! U0 W; c$ Q) f" J; A% H/ e
  5.             {( ~" g3 B( q1 {- r
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient ; `: O, N3 s: _, b  N+ s0 y
  7.                 // 需要注意的: ; p( r: M* j2 I) m
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    6 ~( y: y2 p( ?/ ~% |
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    9 V" I$ K3 n$ Z$ @
  10.                 // webclient.Headers.Add("Cookie", cookie);
      ^- g, c& t3 X; V/ d( w
  11.                 //这样可能需要一些重载方法。根据需要写就可以了: @& }' f" K4 P+ g/ f6 I
  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)");
    6 j! T# A, c  O$ u$ t
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ' M4 w1 S! ~% m
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    , I, P$ P% ~2 X/ [9 E
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    8 h9 N9 J" E) V, i& k1 u* K3 h. U
  16.                 //如果服务器要验证用户名,密码
    0 f+ [0 N, a- L' U
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 9 y; p) U  ]) q
  18.                 //myWebClient.Credentials = mycred; , _6 J' ~* P3 L* k
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    ' X3 P6 G8 ^3 M" S$ e: c
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);" T2 g- g2 _+ G' f8 _
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);+ J& Q- B$ c1 K
  22. 2 C* ^, ~) r# x. L( \
  23.                 //获取网页字符编码描述信息
    + C% x; D  R8 ]1 i( f) D1 i
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);  T7 J; o7 D7 {  M' C% [
  25.                 string webCharSet = charSetMatch.Groups[2].Value;7 Y$ \! q: }) Y1 x& o
  26.                 if (charSet == null || charSet == "")7 `+ J/ H# g9 \2 P; P$ J2 b
  27.                     charSet = webCharSet;8 V  K4 C1 B7 n( J3 i  s* a
  28.                 if (charSet.Length > 0)
    7 \+ }) f: F. U0 P  B5 l0 _  [9 L
  29.                 {
    2 Y" [& E& D3 V) ^; p6 l" }& J
  30.                     charSet = charSet.Replace(""", "");
    5 o; r' h0 b1 O, b
  31.                 }) ^1 l! o5 X/ _2 l
  32.                 if (UseUTF8CharSet)! w9 @; a* d& g0 j
  33.                 {
    % A' L" y' E' _% ^/ |
  34.                     if (charSet == null || charSet.Length == 0)
    # b( ^3 {: _8 g( e2 B( D8 I
  35.                     {
    ' P4 m& c3 P( p! Y
  36.                         charSet = "utf-8";2 C  u  t3 p) u: ^. \- d: n
  37.                     }; |; t  r% C$ Y/ S3 m& T
  38.                 }
    + T! ~6 I% G, P7 }; T
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)( y, i8 M8 ?7 B- X7 m% I7 x
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    ( l9 T6 O1 Y: l

  41. 7 R7 r4 N5 l. d- M3 `. A; x3 e
  42.             }
    9 y. o$ G" t2 ~' K, x( F& }; Q
  43.             catch (Exception)
    / p) j3 d; W/ K: I' O+ y( X; t
  44.             {1 ]9 K4 s: Z7 X$ ^$ `
  45.                 strWebData = "error";
    $ y0 z' q, I9 F- s5 F7 ?
  46.             }- i' |, T& c7 m3 C' M0 w. D

  47. $ O/ F% q1 N3 P/ G* x" y, A1 I
  48.             return strWebData;3 H4 l. w/ g2 T! e: e. C7 a* a
  49.         }
复制代码
& J; j# N4 E2 m. K

& U5 Z+ z. y; [* ?
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-17 04:16 , Processed in 0.054243 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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