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+ 地区跨境债务催收/风险代理高权重Google老户[卖户+筛户等级] 
海外斗篷・智能广告过审率高达 99%DataImpulse⚡️纯净住宅代理仅 $1广告位出租8500万高质量住宅IP,助力各种需求
虚拟卡返佣1%,国内持牌机构   
查看: 9881|回复: 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 抓取全站链接; Q% T9 G6 p# F. }
  2.         public static List<string> GetAllHref(string url)
    . m$ B. |; J* z) f0 Y
  3.         {4 g8 l9 |4 ^# N, o3 m
  4.             List<string> allHref = new List<string>();
    % Z6 ]- a9 T8 P" C7 N" Z
  5.             try1 ~6 F' c2 U  f% F: i# S6 I: e7 P
  6.             {( K) b( w1 I$ x# \; N
  7.                 string strhtml = soso.getHtml(url, "", true);5 \+ ]7 o* k# P1 A
  8.                 if (strhtml != "error")
    * d# B4 E) g7 m5 l2 V% n
  9.                 {
    % G$ n  V9 P! T; _  z; A
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    3 ]/ y8 Q, Z# `1 c3 ~
  11.                     MatchCollection mc = reg.Matches(strhtml);
    3 r8 d; [, k$ G2 `+ H" `7 l  ~, o' b3 @
  12.                     foreach (Match m in mc). b- v9 L0 ^  |
  13.                     {1 S: Z" u) d9 W0 Q
  14.                         Uri uri = new Uri(url);: |. N& ~& u, m2 a+ C# I6 h- t
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);" Q4 L- T4 v& c1 d- W+ z
  16.                         string fullUrl = "";
    / R+ i1 l% D9 t7 t( [+ n6 [
  17.                         if (m.Groups["url"].Value.StartsWith("http"))% ~4 l3 [' H( g) \  v* l: g8 y; e3 T
  18.                         {5 N1 f& u3 m7 H# v! f* u$ u- z
  19.                             fullUrl = m.Groups["url"].Value;
    , o: o0 |' H. x6 M+ x+ Y# L
  20.                         }
    2 d/ K0 b7 Y5 ?6 S" ~
  21.                         else7 P7 i# Z) R# _
  22.                         {
    ; k8 x( {7 w+ U0 A; K
  23.                             fullUrl = thisUri.ToString();2 b8 w- r, s8 C8 a% d$ {
  24.                         }9 A% V! E- t' X' D' z: t
  25.                         allHref.Add(fullUrl);
    $ M& P4 Q5 `- t6 }3 T! M9 Z" E9 [
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    6 S1 K" R9 ]5 Z  g$ n1 x
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);6 ^) M  E8 Q! I# L2 V) f" x- x
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ! S+ Z% T7 q" L) \& X" J
  29.                         //Console.WriteLine("…………………………………………");- Y- G( h# f" S( ?2 f
  30.                     }
    ! |: m# G1 j2 A, e7 Y
  31.                 }
    % t# `9 N9 V, I" e2 }# d6 I
  32.             }
    ) I6 E5 @( e  B# H5 Z$ x3 q
  33.             catch (Exception ex); s6 Z& X) e' v# A  N
  34.             { }. p) I1 C  e$ l# ^$ |0 v
  35.             return allHref;
    7 S- q9 O1 I% F3 w
  36.         }
    & z1 s' z$ c9 n( g' c" s, o, [* D
  37.         #endregion
复制代码
: s) h  }5 c; S6 t% |/ F
# C5 j* Z' P3 k. U3 g' B  S9 n
  1. * U4 |0 x9 L1 a' E$ V1 I

  2. 6 X( u! W) m" H& w: p0 B
  3. , M5 f; M$ l! G* M# \% J
  4. #region 数据去重0 [) R* d, L/ w" H8 S7 e6 {
  5.         /// <summary>/ @3 ^! ~8 l" o& n
  6.         /// List<string>去重# q5 o3 J4 p. w% Z& `
  7.         /// </summary>
    4 O  |8 w; F) P; ^
  8.         /// <param name="list"></param>1 G- J5 b5 {* A2 H- h, B1 x
  9.         /// <returns></returns>
    * T6 E7 s  g( R) Q4 h/ @
  10.         public static List<string> getUnqueList(List<string> list)
    4 y' ^( m, A9 Y5 |; y
  11.         {$ n. ~7 l2 `, d! \! p' u) ], A
  12.             List<string> list1 = new List<string>();
    7 v8 t9 d8 Z& k$ t2 [3 v7 j5 w3 K
  13.             Hashtable hash = new Hashtable();
    ; a# o" N6 R- I8 j$ k
  14.             foreach (string s in list)3 W2 n. w* C/ B  r+ d( O% U$ ^0 [
  15.             {
      z. O$ o1 K" x
  16.                 if (!hash.ContainsKey(s))
    : d0 d$ t4 l6 b' o7 C
  17.                 {
      x0 d  H7 P0 ?) N( Z
  18.                     hash.Add(s, s);
    $ }5 l. z' `' Y' n0 H" [6 ]
  19.                     list1.Add(s);1 e' r: C7 @7 A3 \% q0 a3 n  e
  20.                 }
    9 S  G( s; ]  ]+ w  b  W# M7 [
  21.             }
    4 a/ C# N/ ]: T& q6 s# I' l
  22.             hash.Clear();! u6 K; S8 E# V
  23.             hash = null;; n2 x, m2 a+ }5 e
  24.             return list1;/ {0 j- [( w4 {/ ^- h5 R0 G$ @
  25.         }% K5 ^. T; {5 N. l% ~5 C
  26.         #endregion
复制代码
, o. `  y; [0 [$ a
8 h" \& k0 i1 [8 A5 z- H0 a

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

积分
294
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
; [7 r: f% h( |$ @& D) G/ Y8 r
十分感谢!!!非常感谢!!

点评

缺少一个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, X% V7 t9 s) p* v' p! Z
十分感谢!!!非常感谢!!

9 s* y  u# l5 j$ b& x% N缺少一个gethtml,用下面这个:
9 \: r4 i  w1 d# x; ?+ S
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    # Z2 ~- C  h# m. g4 z
  2.         {
      n+ B5 P2 E7 B- k
  3.             string strWebData = "error";; x% V9 Y; i. `
  4.             try+ U# h% L# v" b7 U. J/ s9 x" t
  5.             {6 p: A. ^7 w! M% p  W4 p8 H
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    - U; R1 u8 u+ r5 W" M/ X& ^! `
  7.                 // 需要注意的: # j  n# H2 I: L
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    5 i+ b" M/ i3 H1 C4 w# ^2 N2 H
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    3 F6 U% w) S2 o# L5 x
  10.                 // webclient.Headers.Add("Cookie", cookie); ) o7 x, o. [) N9 `; N
  11.                 //这样可能需要一些重载方法。根据需要写就可以了! b: k; t" R# |. r$ v0 g: G
  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 b6 k$ u& l
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    * s0 a: S2 v+ }# D7 H/ C6 h! I
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ! t  }1 ~3 v4 b5 v* t- b% y& o
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    7 Q9 j  M) H2 v' W6 o: N$ y
  16.                 //如果服务器要验证用户名,密码 ; _  v1 Z/ t4 f
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword);
    * j" g0 @6 i/ }0 y  [
  18.                 //myWebClient.Credentials = mycred; ) k% m& K0 N) N6 M0 |+ {
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) ! j% k8 Z+ B2 f5 X3 V" V
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    7 ?3 `6 ]9 ]( m! s6 n
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    2 l  F  }8 I& b0 `1 ]3 E
  22. # l  o6 C! I; ], H1 ?7 N
  23.                 //获取网页字符编码描述信息 - f7 I! N4 \7 j# N2 \$ f  ^
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);( A6 [9 |) v2 e! i
  25.                 string webCharSet = charSetMatch.Groups[2].Value;" p0 d; y0 F# A( h, p
  26.                 if (charSet == null || charSet == ""). e* ^5 z4 O* q' |$ C# \: [* R  V
  27.                     charSet = webCharSet;
    2 j8 ?" j0 o8 }0 B; b
  28.                 if (charSet.Length > 0)3 I, ?5 u3 A7 |
  29.                 {
    7 i9 @$ {' X" M/ }/ m% K& [
  30.                     charSet = charSet.Replace(""", "");
    $ b8 {( q3 H! |
  31.                 }" P0 F# R0 N' |( d- i% D
  32.                 if (UseUTF8CharSet)
    0 b' X& W. |/ [5 X/ w5 _: T) v
  33.                 {* ?, ?) K! q+ ]1 t( j- x6 Z
  34.                     if (charSet == null || charSet.Length == 0). `5 _; m8 n0 V8 N2 Y
  35.                     {/ J+ i  d# T; e" q9 \
  36.                         charSet = "utf-8";
    - K2 w9 k+ C8 |' t- z
  37.                     }
    % }% \# K. u: r! m0 q
  38.                 }
    8 k* U# m. `1 s& O
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)6 l5 {8 V$ v; O: f: b# M* j4 b
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);# ?/ K& z( W/ I
  41. ' W& r9 b7 F, U& _* \; w
  42.             }/ S, b3 i5 \( [
  43.             catch (Exception)  p9 G9 m, V  X, v; C. n) q
  44.             {
    ' |5 i9 [/ l( }  g) C
  45.                 strWebData = "error";
    1 h' `0 Y2 Q- C( u* R
  46.             }
    . o8 F$ a- p$ C0 A, Y/ U, F

  47. , z! d4 Z6 i( V
  48.             return strWebData;% p2 Z( U, J8 [" A4 H
  49.         }
复制代码
7 u5 _7 k1 M4 U( V% D' z
8 {1 A; k% S9 `& i
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-22 03:10 , Processed in 0.052883 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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