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/条双ISP提供TK企业新户老户、谷歌新户老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9796|回复: 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 抓取全站链接" H* h/ f& J- D/ v6 N
  2.         public static List<string> GetAllHref(string url)5 x3 m* {% O9 v- R0 A: q
  3.         {
    : _7 {: [9 H! c- t$ v7 [
  4.             List<string> allHref = new List<string>();2 L- z0 L$ Q: |. \2 S# l! `
  5.             try; [% {' Q, D  S# {+ W, H. @
  6.             {
    9 T$ M1 t7 x( d
  7.                 string strhtml = soso.getHtml(url, "", true);: h: Q6 h8 Q% P" [
  8.                 if (strhtml != "error")
    % U- `6 k0 Q& ]; a" Y+ `' K
  9.                 {$ ~7 l0 [+ C7 \/ h$ l
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");' m" q. F9 V6 A* c1 y' d
  11.                     MatchCollection mc = reg.Matches(strhtml);1 ^5 I% K3 d8 Y. v
  12.                     foreach (Match m in mc)2 Z/ s: @# U# j) I# \
  13.                     {2 O% p# |7 g: s! r/ T/ o
  14.                         Uri uri = new Uri(url);
    / Y2 B0 p* h, j9 n/ ?$ s$ O
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);" N/ {; f) m4 S/ F. _& f* h+ M
  16.                         string fullUrl = "";
    : E3 M  Q0 [6 T, c) p
  17.                         if (m.Groups["url"].Value.StartsWith("http")); Z5 U% }( k. |# u0 \$ z
  18.                         {, Y, i% F3 [5 h) J2 U$ B- s
  19.                             fullUrl = m.Groups["url"].Value;% R" c2 T+ |: F$ }
  20.                         }  e$ r; K; X$ a5 E) x) p& }8 X
  21.                         else
    / F0 w/ A% L% ~  e( {  ~0 L3 P" Q1 Y
  22.                         {
    3 m( q2 Y* Q- W8 h: H  v
  23.                             fullUrl = thisUri.ToString();
    % }9 Q* c$ }+ G7 V" R
  24.                         }! P1 c6 ?# w/ n  c6 z2 ]1 p
  25.                         allHref.Add(fullUrl);$ |) p. ]) c0 M, A; E# u+ _6 D
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    3 Z( D2 }; \# F, q/ B. q. X
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);* A; G. [. k$ [$ L" I
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ( ?0 G6 g$ l3 Z" ^8 }) Y$ s' d5 p" L
  29.                         //Console.WriteLine("…………………………………………");, h: m9 @$ g0 u# l7 \8 V$ k  a
  30.                     }/ {0 a0 f. K- g; m  v; H
  31.                 }4 |5 f0 ^* _; c% o' m" F5 e% d
  32.             }& A" C- a/ o- {1 b* I" g. n0 a
  33.             catch (Exception ex)' h& K. L% h% m6 e* P4 B
  34.             { }! D: C8 n) a+ E1 Y  ]2 p( ^% N# b
  35.             return allHref;+ B$ R" c, _6 b( e2 d# P0 z' C& e6 g" x/ D
  36.         }: D' r0 d. O' `  j+ W3 O) Y, t4 g1 k6 ?
  37.         #endregion
复制代码
% N5 O9 O4 g, k. ?$ L
( e+ H) A# n: y
  1. 6 C+ t  q5 u- f5 ~- m+ e0 K: P

  2. , y, O# S, u1 w( p& k0 l2 l# o* Y+ ]

  3. 8 C- }$ Q/ l1 B# ~2 \0 v
  4. #region 数据去重
    0 I; O8 r: a2 U; R  l
  5.         /// <summary>
    ) `4 V! ^+ o7 ~
  6.         /// List<string>去重0 g) O$ k8 Z2 \
  7.         /// </summary>% X; `( }! P4 P' a* W. P
  8.         /// <param name="list"></param>2 N: ?, \. l0 D9 F3 F- j! h8 O- C
  9.         /// <returns></returns>9 N- g7 V4 K" q( ^( G' {- v
  10.         public static List<string> getUnqueList(List<string> list)' M7 M) n5 f& N0 a2 Y  F+ [* z
  11.         {% }4 T7 [) a2 G0 A; {. n
  12.             List<string> list1 = new List<string>();$ w4 e: l3 B5 i% a/ N
  13.             Hashtable hash = new Hashtable();4 x4 L" ]8 U) e  t0 M: M
  14.             foreach (string s in list)
    3 M) X4 Z' ~4 C+ j1 C: R
  15.             {
    1 _+ Y; v" G+ r+ R( F
  16.                 if (!hash.ContainsKey(s))
    . m+ ~! M' n8 N# a6 g
  17.                 {
    , d; t. S8 q% i* w# D$ J) V
  18.                     hash.Add(s, s);( R  Z' j. J# F0 O5 L5 T
  19.                     list1.Add(s);
    ( p7 x. F1 e5 x) j2 l$ q3 j* }
  20.                 }
    . c' B  _! l4 V: t. }2 L
  21.             }) G$ C2 H: }' j1 Y( ?; W
  22.             hash.Clear();
    0 q8 L& `' A/ J7 U0 P3 E
  23.             hash = null;
      _- ?0 X1 |  Z, Z
  24.             return list1;
    : I, s' j9 `- _9 p
  25.         }
    ; E$ Z  D* r5 t& M8 o0 W9 |$ H
  26.         #endregion
复制代码

; l" `7 a! A, \2 O4 \- K8 j
) ~9 Y4 g8 l) J" B; Z6 w; C+ S

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

' {  F% R$ U* n$ h  S十分感谢!!!非常感谢!!

点评

缺少一个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
5 E* S" h# Z6 e十分感谢!!!非常感谢!!

! V7 ]6 l/ X2 ~, P缺少一个gethtml,用下面这个:
# X: ^( z9 r/ w1 f/ G, o" i7 \4 z
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    % X4 n4 m8 ~# S* X& }/ d
  2.         {. M1 u1 B1 W) o3 X# g
  3.             string strWebData = "error";
    . @$ P  I, q* V3 ?- L
  4.             try6 D+ J' f. s7 z8 O
  5.             {
    7 l1 s# s2 M8 d  v! t* @
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ; K+ `! `0 z' g$ |3 n- h) F# u- V" t
  7.                 // 需要注意的:
    5 c/ f; r0 t9 u" g
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 7 I9 T) m; n5 M' s; S9 J
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    # @5 s& K5 z9 Y) Z$ X/ `
  10.                 // webclient.Headers.Add("Cookie", cookie);
    - w. R! x2 f! H/ I0 S0 v: n4 b
  11.                 //这样可能需要一些重载方法。根据需要写就可以了
    % n/ Z4 O9 g; P3 w
  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)");
    ! z4 B* V# `0 h
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");* c1 y: |1 M0 a4 k
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    8 _6 w$ C& N4 i  G3 z, E
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;2 o5 Z2 Q0 `7 J4 M
  16.                 //如果服务器要验证用户名,密码 # r( Y, Z1 ^# L0 I8 K1 G
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); ; D1 z* I4 j  Q/ M2 {- q) ~9 r) x
  18.                 //myWebClient.Credentials = mycred;
    % G' H; t; o) x5 K4 B8 G* |7 _
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 1 B" s% C& b# c
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    6 g2 S1 E9 v! Y2 p" j
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    . H. u9 s2 E, K0 @0 Q
  22. , ], x/ k% l' I
  23.                 //获取网页字符编码描述信息 ; F2 X- e/ d: q8 I% B( c0 Z- `& }
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);5 s$ C* J0 k) y. `% ]8 Z7 g
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    6 k# o: {; g0 Z- ?
  26.                 if (charSet == null || charSet == "")
    * x) x' R7 \( b: L. z
  27.                     charSet = webCharSet;
      J# s$ O8 v* m( i
  28.                 if (charSet.Length > 0)
    + p' U* _% b* Y; f6 q! k* F. r6 _
  29.                 {- Z1 S5 S: c( H1 w. d
  30.                     charSet = charSet.Replace(""", "");/ o, k2 h! ]' |8 f  ]$ g2 v
  31.                 }
    . p% e; q/ y! d; s* q5 t7 [' F
  32.                 if (UseUTF8CharSet)" U0 R, D2 j$ Z  ?5 Z! ~
  33.                 {
    8 r8 z: Y9 f+ u
  34.                     if (charSet == null || charSet.Length == 0)# j8 v+ i+ l" i6 C
  35.                     {
    # M+ e0 c; K1 C
  36.                         charSet = "utf-8";
    + x; M+ h! \+ K/ q! G7 e
  37.                     }
    ' d5 T& ?0 [4 `7 N
  38.                 }' [# S/ J3 b+ [! C% k( X
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)8 e: F* _3 D# p9 u% E- n9 g
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);, r2 ]5 G0 @. j

  41. 2 o# Z. r% V$ `% B- }3 G
  42.             }0 B: T7 @+ b4 c9 [! B7 k7 y
  43.             catch (Exception)
    % m9 j$ |0 R! f5 B' V+ \
  44.             {
    0 F. y0 X! M3 F; O  W: n( {
  45.                 strWebData = "error";
    * Z8 l4 |8 U$ S2 k
  46.             }
    ! K  w; C2 Z: ^: w
  47. ( ^$ `! W, R* W0 u9 O; Y. T% A
  48.             return strWebData;
    7 N6 {1 [4 n% c; i( m
  49.         }
复制代码
: m: P6 l2 E. u2 N/ J9 {
( V, z0 ?4 G5 f0 E
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-28 22:20 , Processed in 0.051617 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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