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%,国内持牌机构  
查看: 9732|回复: 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 抓取全站链接
    7 h" q; z- w' I3 }
  2.         public static List<string> GetAllHref(string url)
    ' G$ e9 U1 g1 r9 [& N( Z$ r: x6 J) h
  3.         {8 s0 o1 v( a- {
  4.             List<string> allHref = new List<string>();
    % K9 h3 G" s1 P  L8 V7 x, j5 M; y
  5.             try
    4 I/ w; A6 R; `) y* Y2 d
  6.             {
    & W, [1 P( U  h' A
  7.                 string strhtml = soso.getHtml(url, "", true);: F8 a/ f9 C( P8 Y* J* u* n$ H
  8.                 if (strhtml != "error")
    6 ?0 j7 r/ H) w  U+ w3 @2 k
  9.                 {- I+ U& I$ b: t' N1 H% n  G
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");5 D" U2 L2 N  b/ I3 U/ u4 K5 e
  11.                     MatchCollection mc = reg.Matches(strhtml);7 K! w8 a5 w4 w; R0 C
  12.                     foreach (Match m in mc)  z7 @" U$ f& c# ^+ \$ {* Z7 p
  13.                     {  R% P, N! \2 O) D% O/ @
  14.                         Uri uri = new Uri(url);5 P3 K! n& `. j0 n: X' s
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);8 U$ c( n' l+ v( `# u
  16.                         string fullUrl = "";
    5 N7 Z$ C! o1 N/ q2 V: ~4 B, m/ R
  17.                         if (m.Groups["url"].Value.StartsWith("http"))3 ~9 m+ ?; f/ w: }. z+ o1 p
  18.                         {* I5 R5 Y9 s, ?/ e, `8 q& C' r" E
  19.                             fullUrl = m.Groups["url"].Value;4 D' H2 ]. A7 a0 L" u  h
  20.                         }/ p! ~, b1 C% C# ~$ j1 K
  21.                         else
    9 w3 U- b' [. w" a
  22.                         {8 c+ I6 s3 U5 c: a
  23.                             fullUrl = thisUri.ToString();
    0 q% e3 o, i. b! D: y! }
  24.                         }* _1 u4 x- N# T4 Y; k" e
  25.                         allHref.Add(fullUrl);
    8 R7 |2 G) @, u# N
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);3 b2 f+ X3 i  X% U  J% F# m% r
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);# q$ Y0 D5 a- y4 M0 s$ G
  28.                         //Console.WriteLine("补全链接:" + fullUrl);# k. u+ T- s1 M; C7 l  S! D- E
  29.                         //Console.WriteLine("…………………………………………");
    6 j* [2 a3 J  ~+ i/ R8 Q+ x
  30.                     }+ \+ \8 a* W3 P) [& K% R
  31.                 }
    * O9 Z4 H( k6 ?; V  O8 Q2 B( ?+ ]) J2 Q
  32.             }
    . x5 W+ `8 S) W8 O0 S
  33.             catch (Exception ex)
    4 Y, u, b6 q8 [  ^/ ~3 P$ ~
  34.             { }; ~5 F9 O8 |" ?& B. y: W5 N
  35.             return allHref;
    / ^& q( M- I# r; ~9 R) h1 v6 y
  36.         }* p# h- L- H/ Q9 C
  37.         #endregion
复制代码

( G. w: ]7 S- x2 h7 i
( a9 a/ Z/ [; x- A/ q! K

  1. % S6 M' }/ H/ q2 y$ l& y7 \
  2. 8 d) J* [/ F4 l4 C" N' L3 b

  3. % E# m8 x9 T+ H, {
  4. #region 数据去重
    6 \$ E! d4 ]6 \
  5.         /// <summary>4 E3 Z6 Z& R: e- Y4 ?( Q
  6.         /// List<string>去重
    8 T2 ~' F- D+ x, Z2 y1 m/ s& F
  7.         /// </summary>
    0 L0 v% D; ~# X9 w5 U0 o2 C
  8.         /// <param name="list"></param>& R9 u" \* X8 Z
  9.         /// <returns></returns>
    * v4 x6 ~6 {# j6 ~
  10.         public static List<string> getUnqueList(List<string> list)3 m; K( d1 A/ F6 k
  11.         {5 k$ u8 _# Z* n& Z9 r. W; ]
  12.             List<string> list1 = new List<string>();
    ; P4 W8 W- E4 S2 C; R1 U: ?  _
  13.             Hashtable hash = new Hashtable();
    " r) \: {/ X# f3 `" d* q
  14.             foreach (string s in list)2 s4 i" O% C9 Q6 l
  15.             {( n" m4 r% q8 s; y7 S
  16.                 if (!hash.ContainsKey(s))
    9 R0 v; g6 D* H2 d! f: T# L
  17.                 {! v: Y$ t! M# f8 |, x9 W
  18.                     hash.Add(s, s);
    ! E) D2 r* H) [( q' I
  19.                     list1.Add(s);
    : L' p8 o5 N7 a
  20.                 }
    ! o/ p$ G1 B5 U
  21.             }
    , `" K5 A9 U' Q5 b, u4 M
  22.             hash.Clear();. i3 W% s8 }. T- R. ^  |
  23.             hash = null;
    ! J4 o3 {0 M7 ^! V  M9 K( `
  24.             return list1;+ z% J  G7 A' R9 I; T
  25.         }
    ) B' b2 x3 Z9 V
  26.         #endregion
复制代码

. ^/ J7 o3 j' w9 M. W$ t
1 W, u5 `. w9 x. ^

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

2 Q+ h5 }) A. F( Z+ t5 ^十分感谢!!!非常感谢!!

点评

缺少一个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  I" X+ m/ }2 ~) \" s) b- Q
十分感谢!!!非常感谢!!

9 C3 t3 _+ y# }# E( b缺少一个gethtml,用下面这个:1 z! p, E- `6 f2 T" m- m, G/ S
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 1 Q/ b' |. _: [- @
  2.         {
    . A! r' Z2 K6 H2 o2 D( U: p
  3.             string strWebData = "error";
    - G, b& \7 p# q5 s- ^; D# F  f
  4.             try* n$ ?2 q; Y5 P/ L  P
  5.             {# Y, u: V( R. w9 ]! j/ Y% U3 T
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 9 {5 c4 X2 ]3 o* \2 A( N/ M: c; z
  7.                 // 需要注意的:
    % G+ l- c; V. A+ T, B$ X
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    9 \. ~3 P$ J/ p5 b$ ?5 n. j
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    3 V$ `+ b# [0 U. P* ^  I: u9 ^" S; \* ?
  10.                 // webclient.Headers.Add("Cookie", cookie);
    % |4 D% K6 f. @, T) |. q
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    & Z- [( W' h! U4 _( N
  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)");
    . }( \1 ]+ |* R# ~3 s
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    1 E' H6 m! z7 w- L- R- z; x
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 . l+ H9 u- u4 C. z" r% H! b
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;4 r. m% T0 M# C
  16.                 //如果服务器要验证用户名,密码 # U! d7 j( \# g; R
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); . L+ ~$ z2 A$ k' x: R& T) t  d- R% ?: q
  18.                 //myWebClient.Credentials = mycred;
    2 o$ h0 X' J6 v7 L9 e
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ; P- C. Z) R! R2 ~
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    7 T# P2 _" _( f" |9 C: k
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ( N# d( {% z$ l
  22. 7 m# ?- g# t, O! I3 S
  23.                 //获取网页字符编码描述信息 $ Y; W& c" F& ^! U' l- D
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    & H, c7 s; T: x" V% l+ j6 Y  _
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    4 B8 y" {0 _) `' b" Q7 Q1 k/ Q
  26.                 if (charSet == null || charSet == ""), S, _9 g7 y" `1 P* S- n8 v
  27.                     charSet = webCharSet;
    5 Y9 y; [3 E$ ~6 _+ l
  28.                 if (charSet.Length > 0)9 x/ G: z( `% ~8 {( F
  29.                 {$ ^% H- \. f# p3 R
  30.                     charSet = charSet.Replace(""", "");( W2 Y8 ]2 u+ Y- y3 Z
  31.                 }9 D/ z- W0 _- {
  32.                 if (UseUTF8CharSet)
    3 f$ y% R" A/ Z* \
  33.                 {
    - v( Y- G& \7 y' U1 ^
  34.                     if (charSet == null || charSet.Length == 0)
    1 D6 y' Y5 D$ l: ^( ?7 U" p+ f1 K
  35.                     {6 q( m( s" T5 ?$ j5 z. q
  36.                         charSet = "utf-8";# B6 _7 o3 m9 `+ T
  37.                     }
    ( j: _: r3 T4 w% R2 r+ |
  38.                 }3 a' U: {5 [3 ^+ h
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)$ m4 N& f- ]8 }  u, U4 N& [$ E
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    4 h; [( z! D5 A# y
  41. 3 h! E' `1 W& {( L- T- z* u
  42.             }8 w4 z0 t- o0 d! l2 G
  43.             catch (Exception)+ F8 h6 R! i; A* I2 ~4 ]0 e7 s2 O
  44.             {+ ], e( y# i  R3 c4 [* |+ D
  45.                 strWebData = "error";
    ( @6 }; \- Y0 Z& n4 I
  46.             }
    4 n6 X0 l6 V' z5 A  x9 L7 d

  47. " ~) L/ G$ ~: _9 [8 o
  48.             return strWebData;7 A$ J  T6 E, z( h3 P3 n
  49.         }
复制代码
9 |' q0 o0 m& P, m

, K# m" q9 Y5 {# [8 w9 c
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-8 19:17 , Processed in 0.057559 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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