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%,国内持牌机构  
查看: 9909|回复: 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 抓取全站链接
    " J# X# `- c* e: W  W) m( e
  2.         public static List<string> GetAllHref(string url)4 X" f+ t7 D" k) {% A# J
  3.         {
    ) R  e- T. T6 [; [
  4.             List<string> allHref = new List<string>();4 n" I* j* J. \- [  H
  5.             try
    3 ^0 Z7 `* u" {. u- E+ H- L
  6.             {
    & V) _- F) Y+ a; m0 G
  7.                 string strhtml = soso.getHtml(url, "", true);
    - Y( @3 W* v9 U( _  m8 G
  8.                 if (strhtml != "error")
    + {5 Y) F* U  Y4 g( A* m, O
  9.                 {
      `& g2 w* _: @$ F( }1 c
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");; y/ E5 J8 y8 t8 j- K2 u* N# z4 F
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ( |' }! G/ j2 p9 d6 Z4 R
  12.                     foreach (Match m in mc)
    2 a3 s* o$ @" w
  13.                     {
    / g/ K* p. W5 {) F1 L4 e, {; W) }  @
  14.                         Uri uri = new Uri(url);
    . d+ W7 M2 g; ^. q1 E
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);/ u1 @/ }% f+ S! U0 I
  16.                         string fullUrl = "";
    $ P- s- s- _% I$ H" l5 k' ^: w
  17.                         if (m.Groups["url"].Value.StartsWith("http"))
    . M9 S) U; a. z2 I6 @1 P2 ?% Z& ~
  18.                         {" ^1 f2 ?% f- m7 p% l1 ]% }, U4 w- f
  19.                             fullUrl = m.Groups["url"].Value;8 r( s6 I+ J9 k# q( H
  20.                         }
    " ?) E/ j2 `& o) a
  21.                         else
    + S. q8 l: j# u
  22.                         {
    6 a  C4 ]8 P) W: Z# k! u2 {
  23.                             fullUrl = thisUri.ToString();; {' M" ~2 C( l) o
  24.                         }: E) @. l) o5 D- B/ d
  25.                         allHref.Add(fullUrl);
    0 P- s4 Q" Y/ O& F2 e7 S
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ) c% [7 Z. Q( Z
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    . t3 K) T% C: @: E0 u4 w( ^
  28.                         //Console.WriteLine("补全链接:" + fullUrl);: F) G3 I" b7 y" Z" x
  29.                         //Console.WriteLine("…………………………………………");5 E; _. B' N+ ^4 r+ v6 h
  30.                     }0 M; m. R% Y) h+ S
  31.                 }
    5 [3 C, r9 d" \$ V+ D
  32.             }
    ) u& M- M& R0 n2 o$ b
  33.             catch (Exception ex). h; j6 r; ~" s: n; O; Q0 _
  34.             { }  I3 x3 \1 `: b; j+ F
  35.             return allHref;
    / K& e- A5 z7 A9 g) a. ?
  36.         }
    " W% i  ^+ \, I/ R4 }
  37.         #endregion
复制代码

; E$ P- B: {& D+ J/ g3 T6 k3 O* W) X- `! ~7 ^' R! w- w

  1. 2 n# `. y! n' }$ A2 F8 C

  2. 7 M: o% _/ J5 w- X2 k$ o
  3. # I' B! G  X5 s
  4. #region 数据去重
    5 {/ }! c) Z( z0 g" T. u9 r8 S
  5.         /// <summary>
    # J: k) Q6 `; e
  6.         /// List<string>去重( P5 A1 u, m% E4 Q4 Q) t) c( _
  7.         /// </summary>3 I+ N: C% c0 m$ J4 A
  8.         /// <param name="list"></param>
    ; x/ m% c5 k. N) Y# C$ a
  9.         /// <returns></returns>
    ; f: M8 g- m! E, A+ G  s  j
  10.         public static List<string> getUnqueList(List<string> list)# t+ \) {5 h+ m8 d5 W1 E1 n+ S
  11.         {
    . B/ ^1 }+ w. g
  12.             List<string> list1 = new List<string>();
    ' ^1 j0 B$ U5 p' X8 x( f
  13.             Hashtable hash = new Hashtable();) P9 B7 w+ w& O4 m+ V3 B
  14.             foreach (string s in list)8 D" Y$ q* B. {2 S( W
  15.             {
    6 F& E# N" H5 G
  16.                 if (!hash.ContainsKey(s))1 x9 X/ d; C+ ~8 @1 J
  17.                 {
    7 A/ `0 f! C" W! {% w! r9 O& \
  18.                     hash.Add(s, s);) F, k5 Q" ]5 Q8 a% K9 X
  19.                     list1.Add(s);
    ; {& |- q) n; p4 P( Q& k4 W
  20.                 }
    & I' V, R3 O! g6 n! o+ p
  21.             }- s1 i1 e$ a2 H" g
  22.             hash.Clear();
    ( T! o" b5 n# m6 ^
  23.             hash = null;9 r4 k$ V! o! ^/ W" e+ O% u
  24.             return list1;
    " i( S. ]0 D  A/ q5 P* M
  25.         }& k  O; Z0 k5 P* O& p, D! O
  26.         #endregion
复制代码
' l5 B! P, ^9 c- F# s% d
. g! w! E0 ]+ J% Q2 u3 h2 o

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

4 g7 U. _/ z- ^( m十分感谢!!!非常感谢!!

点评

缺少一个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 n3 d; m3 l( {( n. O$ m十分感谢!!!非常感谢!!

$ |' R5 |2 U: E缺少一个gethtml,用下面这个:6 B3 X4 x# c0 r6 A
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 9 `/ q( }' }% m6 u. \, t$ x, `
  2.         {
    $ C( @5 c6 s) b& {
  3.             string strWebData = "error";! |# [2 U4 \9 H4 N1 J/ h
  4.             try& I% p4 }) U0 {. v* i, U
  5.             {, C+ p" l; o- l: ~+ h" M
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    6 N  Q" H4 ?2 K
  7.                 // 需要注意的:
    ( }# k0 d5 X0 V- `( |
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    & e4 k, x" ^1 S# P; K" l) M
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ! P4 d) H3 z! D# [
  10.                 // webclient.Headers.Add("Cookie", cookie); 5 c9 v/ C! r2 f9 w3 {% u
  11.                 //这样可能需要一些重载方法。根据需要写就可以了' R# O* o+ }% `2 O
  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)");
    9 z" I8 B$ V" ]% P- P1 m7 Y$ r
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ) |/ O! ^% s5 ?4 U- d/ x$ Z* j
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ! m+ r- Y& {* {! P6 l' p
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    * w3 _# |  p* ]9 U  r3 U) |! t
  16.                 //如果服务器要验证用户名,密码 . R: e1 E9 J" r' Z; \( z! U; v
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 2 ?+ [' j$ L" _8 Y) [2 E
  18.                 //myWebClient.Credentials = mycred;
    ) p% X% w/ T8 h5 C/ U0 P2 g7 @, X
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) * o* ^8 m0 P) [- x" f
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    7 d$ m9 @& L# K% k% i8 _0 O
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);7 E; ]+ N! O: _
  22. 1 M" N1 a9 F7 }  X- J$ V2 W
  23.                 //获取网页字符编码描述信息
    2 s8 ?7 t2 t0 ]1 u
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    6 _! t( B0 n6 [& p0 z+ C+ t5 C5 {% o0 F
  25.                 string webCharSet = charSetMatch.Groups[2].Value;' n8 b; Z  W& M, [( @; R
  26.                 if (charSet == null || charSet == "")
    . W1 A' F% h$ I/ m" S6 z
  27.                     charSet = webCharSet;
    ; I: ]. L7 B& V2 W2 |" E
  28.                 if (charSet.Length > 0)
    % w8 m" x0 w# A9 J( Q! u: I! j3 b6 c
  29.                 {( [; D6 `- L5 \: |
  30.                     charSet = charSet.Replace(""", "");
    6 w7 M2 D" N$ f; T. S( t% [
  31.                 }- ~3 X& @" B2 g6 `4 L% j
  32.                 if (UseUTF8CharSet)& g" g* O3 z$ w+ _7 w" j1 k" V) t
  33.                 {  l" n, H8 E9 j7 u
  34.                     if (charSet == null || charSet.Length == 0)
    6 O% U1 _0 I$ |' v6 v5 ]; f
  35.                     {
    9 \  s- L! `* B+ d
  36.                         charSet = "utf-8";
    / C( ?: q  y7 @/ m% b
  37.                     }
    / G- w2 V& K% M! n
  38.                 }+ [: x8 F, r3 k! K8 W. F( u1 D
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)  }: X+ l3 }* p! ~: w: D
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    # x" V# C: j0 q0 p- n- G% V

  41. " U1 w/ v; v" }/ d) D6 q( Q
  42.             }
    * ^. o# }6 w7 J- c- Y) Q1 A
  43.             catch (Exception)
    ( U! O# t' _5 E( M2 Y
  44.             {6 f/ u+ G% @) u3 Q7 |. c9 P; q
  45.                 strWebData = "error";9 ~" k0 `; _# ]6 t! k
  46.             }" k8 Y- S0 H9 f' K% {

  47. * C% S' `9 J! P7 G, q: D: r5 K
  48.             return strWebData;
    3 @; R% u1 M/ L+ \1 I1 U) `9 K0 S
  49.         }
复制代码
0 r, Y. v' o5 C: z, N3 |
3 s/ ]. y( F# X
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-25 07:18 , Processed in 0.052981 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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