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加白老户
海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量
FB稳定代理/住宅IP/ADV50打五折 FB个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区
跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 海外斗篷【智能风控】,过审率95%+广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9862|回复: 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 抓取全站链接# P8 O- X. P7 ^3 x: j
  2.         public static List<string> GetAllHref(string url)
    % c4 E& w3 ~# P% U
  3.         {
    2 y/ q( p! }! O2 g5 a( I
  4.             List<string> allHref = new List<string>();+ \6 |5 Q6 m0 y. ~
  5.             try
    - l, \7 y) z- c  ~' d$ j) H
  6.             {& Y5 t) Y, s( h: a7 y, M
  7.                 string strhtml = soso.getHtml(url, "", true);
    8 i6 M, Q3 Q' C6 C6 {3 m
  8.                 if (strhtml != "error")
    # Y4 P. c5 z# N: `. ?' |- x
  9.                 {
    % P  o( B7 q. E: ^6 q0 t
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    9 s" y1 c8 j2 j9 w
  11.                     MatchCollection mc = reg.Matches(strhtml);+ R) Q/ [1 K8 A$ Z
  12.                     foreach (Match m in mc)
    & h- K- Q/ b8 A2 X8 }0 N
  13.                     {
    8 c$ g7 u6 z+ Q1 q9 e
  14.                         Uri uri = new Uri(url);
    $ }! t+ o9 m: U4 V. U, q% c& e: {
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);( q7 G0 _3 D! F9 L" X* E
  16.                         string fullUrl = "";5 E* _: k/ k  V$ b" B
  17.                         if (m.Groups["url"].Value.StartsWith("http")); R' V4 A! i5 I
  18.                         {6 N/ s) [& ]0 J% L
  19.                             fullUrl = m.Groups["url"].Value;, W6 g# g6 R- g# a: w; d% H
  20.                         }
    6 L" R( D$ H% K
  21.                         else
    " A) ?, a% k" r" {
  22.                         {
    : k& z! K  Z' ?
  23.                             fullUrl = thisUri.ToString();
    ) |  Y7 i% ?9 g& i% P
  24.                         }* |7 u* W& i" ~+ w
  25.                         allHref.Add(fullUrl);
    4 Q$ Y; r% U/ n( S' ?& |, o8 A
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);, z* K! t9 v, ^1 n6 O  ~, n: ?
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    " s* T0 i0 }& |2 R0 ~/ V1 R
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    * ]( }9 H- m: c/ x4 t& ^- ~9 B; U
  29.                         //Console.WriteLine("…………………………………………");, n# M/ X* l4 m0 R
  30.                     }: m' Q5 Z" G5 `7 s
  31.                 }' |' b, B5 e+ R1 U# v$ U$ v% J
  32.             }
    3 p/ y0 C  e8 h& \& K
  33.             catch (Exception ex)
    , ~6 ?9 x' A, X7 e8 ^# D1 ]
  34.             { }
    4 F/ \: W$ E) O) W; ^: a
  35.             return allHref;
    2 E4 G2 k+ k' }% d- _
  36.         }
    + m/ S9 O5 E% h) Q' ^8 b
  37.         #endregion
复制代码
. I( G$ c, q& w! [6 w0 ~
' c/ A* T0 C$ z1 d6 e7 K3 N. A' P7 ?
  1. ( v0 o1 D* ?% `' l: d
  2. / l7 A6 h. e0 u; C; n3 f" j

  3.   B. G1 J4 p! A" E
  4. #region 数据去重
    $ V  g) b+ Q: g! u  p/ D
  5.         /// <summary>) |1 {* y" e' v8 f! x+ O" i
  6.         /// List<string>去重6 k7 q1 E( E" H
  7.         /// </summary>4 q0 t2 V2 s" L' n3 `( q
  8.         /// <param name="list"></param>
    " V* q, T( Z7 a4 d0 y2 J
  9.         /// <returns></returns>7 S/ V" a  U. Y% D5 b* Z+ Q
  10.         public static List<string> getUnqueList(List<string> list)% m; {6 Q: X2 t! {1 ^" {
  11.         {4 F7 R6 {. J& I3 q
  12.             List<string> list1 = new List<string>();
    7 k* d3 }7 r! j  m: ^$ R. l1 V
  13.             Hashtable hash = new Hashtable();
    6 u- C8 z$ E% R! C
  14.             foreach (string s in list)  e$ P$ N/ B, P7 J; T
  15.             {
      u6 \! B5 e* G# K1 \% U/ `/ N) m
  16.                 if (!hash.ContainsKey(s))
    4 r, o# d/ Q& k  B. Z
  17.                 {$ Q- h3 @) l, n3 d0 k9 {  Y
  18.                     hash.Add(s, s);. y+ i; {8 p# k. ?) m" k/ t
  19.                     list1.Add(s);
    1 Q2 f9 R) x1 D, T' {0 R( G1 n% i
  20.                 }
    , w+ t6 V3 y% R# l0 k
  21.             }% g& ^0 x9 `. Q' U1 e
  22.             hash.Clear();
    4 H8 U3 G) |5 N7 I. ]$ ]% Y
  23.             hash = null;8 b) @9 }% ]& S+ n
  24.             return list1;% V5 H' h- {) z! A6 q, Y4 U: j
  25.         }' g2 P% C9 S4 y2 }- v" [
  26.         #endregion
复制代码

$ u( ^3 }# t' b1 _" N( z" j8 j7 E" C9 f2 h& |

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

# O; G9 A. w" [. \& u. z十分感谢!!!非常感谢!!

点评

缺少一个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
8 l6 i+ N* U2 `+ Q/ A1 u十分感谢!!!非常感谢!!
. g" [# z/ [$ M  p! `* _; G+ `
缺少一个gethtml,用下面这个:
7 G5 R7 M5 _9 _3 l
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    , `$ l5 {  J* c0 y
  2.         {# e# d& w5 R9 O1 q
  3.             string strWebData = "error";9 y( q3 p# r( h( m. F
  4.             try
    + w( L  Y9 z+ ]
  5.             {" V5 w3 F+ Z# J+ v8 @* t
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    . D5 G' \, _$ w; P% y0 E1 g. L
  7.                 // 需要注意的: - q- p  t$ m& r* [9 M8 S3 k
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 4 e3 r3 z  ?9 U+ d3 ^
  9.                 //这是就要具体问题具体分析比如在头部加入cookie : H) r% U, f0 S4 j% K
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ( x& \0 ?+ d# ^9 h$ N" q( T) f8 T
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    ) S2 ~; |" K5 w7 u5 r
  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)");
      c4 j# r7 B# w1 }8 U8 f; Z- {+ Z
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    , f2 O" ^8 `+ e: r/ Z( N
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ! D% l4 ]. ^6 I4 k
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    * n  m3 G4 l4 ?5 v
  16.                 //如果服务器要验证用户名,密码 2 c+ r+ x5 F6 [4 h
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ; l+ M3 Z9 \1 K0 i/ t0 \( S
  18.                 //myWebClient.Credentials = mycred;
    ) z) V" x- p: c& [% w
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) & Y+ _9 ?/ Z$ p$ |/ R( `
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);: x4 U+ {5 O' ~
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    9 @7 q! q7 `/ [2 L

  22. 2 I5 P1 m+ Z# T! z
  23.                 //获取网页字符编码描述信息
    ; `: C8 S. k9 z  ?" `0 t* Z
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    7 X; H; E+ K3 P8 ]5 F* F
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    2 b: B' R; t8 x, E% S% m! j3 R
  26.                 if (charSet == null || charSet == "")0 b" [5 E% l) J( C  [7 S" J% c
  27.                     charSet = webCharSet;( z+ a) ?2 e% O/ O
  28.                 if (charSet.Length > 0)
    . Y% b7 s. ?2 Q; R: l3 {  M, }/ X
  29.                 {% a1 L3 Y1 J7 S4 H
  30.                     charSet = charSet.Replace(""", "");3 J; V. \5 Q! M+ l- F
  31.                 }3 J" O& w" u; I* N) z' [6 S
  32.                 if (UseUTF8CharSet)6 Q4 i& H6 h$ V) e* f* r
  33.                 {
    7 H5 [; `: z( V1 o
  34.                     if (charSet == null || charSet.Length == 0)- ?& U+ v/ ^; A1 Q( X; I
  35.                     {
    4 K8 F& X4 @( S4 Y; t
  36.                         charSet = "utf-8";. T# g# Q4 h* v# ~, }) M: w8 _2 R
  37.                     }$ Y3 b' d! U6 `1 V' u
  38.                 }  j- `8 N3 ]6 c0 I5 x
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)+ \3 D+ O6 \- K; J( w1 s% Y
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    , U2 W' s$ i; v# N$ p
  41. : c- ~+ i( S! ?/ \, |2 n& i# c
  42.             }4 u# i: p9 o- e
  43.             catch (Exception)0 M. H3 N' q  U/ j7 l& W2 @
  44.             {
    0 j5 x* B0 ]- `" D& Q! L3 n, ~
  45.                 strWebData = "error";. u- m, O) c, _2 k0 k: y4 m
  46.             }6 p( |2 q& }2 x* u

  47. 6 z* R. A- O4 [3 t
  48.             return strWebData;
    1 U+ i6 ^( c2 u' S# h4 o( F3 `
  49.         }
复制代码

% `3 S# z" y+ t
1 t0 E6 z7 N/ O$ t# z
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-13 18:14 , Processed in 0.055932 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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