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个号1块一个TikTok2审户/老户/国内外端口/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作
广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构 
查看: 9831|回复: 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 抓取全站链接  _. |% ]- G* X- _6 |. G
  2.         public static List<string> GetAllHref(string url), Z5 m9 N6 c) R6 t6 e
  3.         {
    5 K5 s$ z/ q- J
  4.             List<string> allHref = new List<string>();& [" m! l) {) B! V8 M" K
  5.             try- B- u& n5 `! _4 Y$ g: n% s' I9 @
  6.             {
    9 j. M, j) K6 r
  7.                 string strhtml = soso.getHtml(url, "", true);0 C1 O6 p" s6 j3 _1 N( b: T5 U* M, o; S) v
  8.                 if (strhtml != "error")
      g9 R0 S1 L3 q5 j8 ^0 Z
  9.                 {" T! s3 r* H+ k/ W4 |0 G# x
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");8 D% {, @6 {, x; c, w  |) l% J
  11.                     MatchCollection mc = reg.Matches(strhtml);
    ' k( b8 m; a& o
  12.                     foreach (Match m in mc)
    2 g8 E5 L4 b' P5 v$ |" b; }
  13.                     {
    1 c/ o8 \9 Q! h& V1 Q& o. R
  14.                         Uri uri = new Uri(url);
    , z2 h4 z5 \1 ^% C
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    ' E9 A' I- X, p+ K- p$ }4 Y
  16.                         string fullUrl = "";
    ( ]+ w. `: R2 v$ A$ Q! W; ?' H5 }. ^3 Q
  17.                         if (m.Groups["url"].Value.StartsWith("http")); ^% b0 E% Y! d3 z+ I
  18.                         {
    " T8 R6 w3 G6 _  u
  19.                             fullUrl = m.Groups["url"].Value;
    - J1 W5 W! a3 N; H# w# P
  20.                         }( k/ N/ A7 J6 @
  21.                         else
    5 i. G# j, @& T5 T
  22.                         {
    $ x0 O8 S) \$ j8 C
  23.                             fullUrl = thisUri.ToString();6 E- ]" C; d6 W! D
  24.                         }
    8 m' c+ P3 O+ P+ Q# @/ q( J/ m
  25.                         allHref.Add(fullUrl);" Y- b. Q# T5 E7 E; R1 B) G
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);' s8 t: `- z3 Z& w- \
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    & L: y$ x' |; k0 _6 z+ W. T% r
  28.                         //Console.WriteLine("补全链接:" + fullUrl);+ u$ G4 O9 K3 @: V) z5 C1 c! M# Z
  29.                         //Console.WriteLine("…………………………………………");
    4 h9 S; }4 k; t+ s
  30.                     }
    8 S  t: q* Q# d4 v& M- F# l
  31.                 }* h6 Z7 i  Q, F2 o
  32.             }
    $ d+ y" S# W6 h# g& X* n
  33.             catch (Exception ex)
    + Y6 j( Q3 h) V& H9 Y2 Q
  34.             { }
    & y4 f" Q+ Y2 b; r* b( W3 T
  35.             return allHref;
    6 _" V+ I0 _4 d0 ~) R
  36.         }
    # J0 L2 F8 }+ i( M
  37.         #endregion
复制代码

/ {% p, M, H) `, w
3 K6 J, Q( v& Y/ h
  1. ( a* P% i  r) |8 \. V

  2. ) O* w, T* X3 J9 D

  3. 4 Q4 O$ F* A& K
  4. #region 数据去重- {$ i* _9 D$ R' [/ v
  5.         /// <summary>. [& u( C/ C6 r6 |4 T9 U" h
  6.         /// List<string>去重
    : P2 N' H. m5 N
  7.         /// </summary>7 C( T1 k1 I5 b
  8.         /// <param name="list"></param>
    & \4 L7 {9 q5 p$ w, A4 o
  9.         /// <returns></returns>  s/ K& w; q8 n& j
  10.         public static List<string> getUnqueList(List<string> list)  B( j& r  P0 z( G8 r, Y8 Q6 m
  11.         {
    3 i4 s) U4 B# X' ~5 A" u0 _
  12.             List<string> list1 = new List<string>();# i+ G: R/ b' R7 ]" o
  13.             Hashtable hash = new Hashtable();2 z; u2 Z+ P8 s1 t
  14.             foreach (string s in list)
    6 P& Q0 N5 n" r
  15.             {; x6 F0 ?4 v3 i" o1 v- v! ?$ M  t
  16.                 if (!hash.ContainsKey(s))2 m9 ]2 j# e( m- Z. V3 c
  17.                 {) K" ]' U! T  F& C3 p  b
  18.                     hash.Add(s, s);7 q; p* Y; S( A5 @
  19.                     list1.Add(s);
    # t0 |" Y4 Z# x* |: t
  20.                 }( P" [& R1 c# ^
  21.             }/ k9 F: K8 g. [) M; C& l
  22.             hash.Clear();7 m/ K+ C) Q+ s
  23.             hash = null;% h0 X  t+ C4 E  h2 E) K
  24.             return list1;/ k4 Q& I# Z# x( A2 }
  25.         }: d( r5 k5 x$ c  L" D: q4 e
  26.         #endregion
复制代码
/ S2 M; y/ h* A4 ~
8 v) x0 M* R# t. G. ~0 u

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

" b+ ^! V; b5 X十分感谢!!!非常感谢!!

点评

缺少一个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 }/ ?4 C4 Y. G! [  Y; v* @6 B! w2 m十分感谢!!!非常感谢!!
% s) d4 ^( G; y3 |
缺少一个gethtml,用下面这个:
8 _# d* \" C; f/ E$ C
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
    1 G# Z2 L8 J' M+ T+ x
  2.         {3 |4 D+ _1 [( K
  3.             string strWebData = "error";
    3 x# V* j" P3 ]: V& \4 _
  4.             try
    ' q3 d: z7 g9 Y% a
  5.             {
    * n) d) v; P! S
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient   p8 Q' ^4 I2 A8 i9 Q
  7.                 // 需要注意的: : m# ?/ c1 G( N7 J5 z5 O
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    0 l2 l- R- M$ Q4 U- y; o& F- G
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    ' g$ G3 A# W1 z2 q3 n& \, J" P
  10.                 // webclient.Headers.Add("Cookie", cookie);
    ( n' J" e+ l3 e7 f9 o
  11.                 //这样可能需要一些重载方法。根据需要写就可以了- c1 u% @3 t: V+ Q
  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)");
    ' V3 C" V. o+ y/ C
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    9 o/ g- Q+ q, G9 v/ M2 ~
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    / L$ h, N5 X" K" L* A
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    " t1 O: |0 j* m+ L" a" T
  16.                 //如果服务器要验证用户名,密码
    1 W! J/ h' {2 S
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 3 [' ]+ ^9 t% q, d6 g8 c, _
  18.                 //myWebClient.Credentials = mycred; * N$ C3 A# a( I1 ]) }! x$ O
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    7 W" l$ l) R4 A# p3 T& j# Q- y7 B
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);. \& x% J$ B' ?: u
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);& i7 w9 c5 r7 u7 Y

  22. 8 G: c, J- I  u1 G% U, R
  23.                 //获取网页字符编码描述信息 % Z5 X4 M; a/ h$ S* ?
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);- I1 g2 W. E& L
  25.                 string webCharSet = charSetMatch.Groups[2].Value;$ _- w6 K  A: m( {2 T
  26.                 if (charSet == null || charSet == "")) M; x' j& I" M7 x  E
  27.                     charSet = webCharSet;- V3 t; R1 Q. |
  28.                 if (charSet.Length > 0)7 J0 X; F" K6 m2 A* A+ y3 u
  29.                 {
    + J5 f" \7 ?# ~+ y) s3 ]2 J* X# R# ~
  30.                     charSet = charSet.Replace(""", "");1 l$ }1 f1 k1 u" u
  31.                 }; N" O3 w( b0 |2 S* L4 R
  32.                 if (UseUTF8CharSet)
    ; V2 l9 l1 ~% F9 v! H
  33.                 {/ \4 R- A6 V) x& x( `0 j
  34.                     if (charSet == null || charSet.Length == 0)
    7 P' n2 L% X1 D- _: s& r" B
  35.                     {
    " y! |, a) j: R# ?0 n$ r  W
  36.                         charSet = "utf-8";- o7 K6 B' |0 ?
  37.                     }# u4 t2 h5 K( Y) r% f$ X
  38.                 }! {+ {$ o' K: d" A: Z; W8 C& t% O
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)/ E/ X) A) W+ b, a4 E
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);" {: a3 b& r7 o, q9 ]6 z. e$ Y/ e7 o

  41. 4 G" v) j+ A  _2 h. H% v
  42.             }/ \' v$ _: s& t$ c' W. \; u( N. ~
  43.             catch (Exception)8 z* [: J3 y4 @# t
  44.             {
    " m6 _+ g4 h+ Q! x
  45.                 strWebData = "error";+ t# Q2 k2 e# m
  46.             }
    5 U3 t( L$ A% G

  47. 3 J  x+ l. G" q. @! P' G; J6 _
  48.             return strWebData;
    6 I3 k" D( x6 w, C; s1 |/ j2 P
  49.         }
复制代码
' v% _/ i0 @: ?& x
% n3 }8 l9 {; x& |8 [
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 12:48 , Processed in 0.051480 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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