AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G需要代理IP?⚡️Proxysites.ai⚡️指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理全球虚拟卡, 支持U充值Facebook 批量上广告
尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)
⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽 IPCola原生住宅IP⚡️$2.1/条双ISP
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单fb耐用号0.01一个fb账号官方合作商
FB资源,账单户,分享户,国内一手FB企业户BM户账单户源头广告位出租 
查看: 9321|回复: 7

[业界] 求推荐一个一键提取网站里面的URL且根据域名去重复的小...

[复制链接]

36

主题

164

广告币

251

积分

初级会员

Rank: 2

积分
251
发表于 2016-2-26 16:08:04 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2

主题

1369

广告币

1730

积分

高级会员

Rank: 4

积分
1730

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    5 h) t9 X9 C3 n/ ^- g6 A( u
  2.         public static List<string> GetAllHref(string url)
    # M. X  d6 I$ W. b
  3.         {
    + g$ Z+ g. S" D) _7 H
  4.             List<string> allHref = new List<string>();5 h# W) ^4 W0 q+ Z/ U) _8 R
  5.             try
    + C" N" ~- C) n* x8 i; y
  6.             {
    , b, X/ Y; ]: o8 W5 x
  7.                 string strhtml = soso.getHtml(url, "", true);" c3 `2 A9 k; |8 Z4 {) p
  8.                 if (strhtml != "error")
    7 W0 X8 b8 a, O, R
  9.                 {" @' Y7 }: K2 D5 ^  _0 g, o/ N2 t
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    * R; r" ~# s; F) X- w: X
  11.                     MatchCollection mc = reg.Matches(strhtml);: G$ j4 E& H5 u4 @/ |5 m7 E# Y' k0 L5 v
  12.                     foreach (Match m in mc)( w4 k1 y) g7 H2 w, z
  13.                     {* `- O9 S) _2 m% |
  14.                         Uri uri = new Uri(url);
    ! M, ?' D* D! ^3 u$ t& K
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);; z, ?5 f+ U& i1 a
  16.                         string fullUrl = "";6 A* O6 k4 [3 N! k+ }: O' ~
  17.                         if (m.Groups["url"].Value.StartsWith("http"))3 Z/ j) x' B! M" m0 |6 }% Q
  18.                         {
    & T) O* t1 Y; b
  19.                             fullUrl = m.Groups["url"].Value;
    $ u* ?% d' e- C3 E* S
  20.                         }
    * X( [5 @) J/ b( o
  21.                         else
    4 A6 I. j" t- G$ O
  22.                         {; Z, b) q+ R- o  l+ t6 |
  23.                             fullUrl = thisUri.ToString();
    % o# `9 X' V7 B) t0 c
  24.                         }
    & ]; @# y, K+ }2 [
  25.                         allHref.Add(fullUrl);9 M3 o; h9 Z! J7 ~6 R- T* G
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);7 P5 n1 x# K0 l' G+ a4 f& ^9 z7 F1 y
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
    ! \  i" K3 `& ?) F8 R
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    ' r1 E- e2 |& d
  29.                         //Console.WriteLine("…………………………………………");  S" m8 t3 o" i5 m
  30.                     }
    7 q4 Q% A% L: e# ^  H8 j
  31.                 }. V1 b" |4 `% _. H
  32.             }: j6 H/ v) q0 r# ]3 u
  33.             catch (Exception ex)$ [, c# O9 s. F& q; B2 \; P% u
  34.             { }4 W1 l7 ~5 h$ c, Y2 Y
  35.             return allHref;
    # e9 @* p% ?! p4 F% T* _$ [3 g! D
  36.         }) L' {/ {& ~& S; k  b. J& n. _5 R( j
  37.         #endregion
复制代码

( M3 H* f' h7 D6 V, l4 s+ p0 D8 c" i- ~" C2 d

  1. 5 O  D; H- F3 H' y" c% Y

  2. # b4 x5 B$ a$ H) x0 E- ]
  3. * }6 u5 g: b( b% e$ S6 M: E/ v
  4. #region 数据去重. }4 v) f- ~) `4 m( ^
  5.         /// <summary>
    + t* O+ k+ o. e  a
  6.         /// List<string>去重) O+ d- ~' J7 H% n8 @7 |
  7.         /// </summary>
    4 X# K9 w# V0 `
  8.         /// <param name="list"></param>
    2 ?: t* u$ E3 A3 q( U1 Y
  9.         /// <returns></returns>( Y2 K" j6 w& }$ K2 ^
  10.         public static List<string> getUnqueList(List<string> list)
    4 x) B2 y  S9 z6 A' g. N
  11.         {+ i% v1 F0 I  l+ n2 ~* x% }6 |
  12.             List<string> list1 = new List<string>();
    ; X9 q4 Q3 I7 X2 V7 t
  13.             Hashtable hash = new Hashtable();
    & O( r" C. F& _
  14.             foreach (string s in list)
    ) H2 i* r" Z& x& }. M7 [
  15.             {
    2 D' o% G: L4 N& f, B
  16.                 if (!hash.ContainsKey(s))
    ( {$ q2 O1 Y  ]& k2 d
  17.                 {& I% h$ k0 Y' W, v5 M1 i! Y
  18.                     hash.Add(s, s);
    + R! Q4 ~7 \; M. y" Q
  19.                     list1.Add(s);
    8 _& Q( T2 T: D
  20.                 }0 X2 \0 V9 e1 Y  e! P
  21.             }
    ' q- y, a0 b& p0 S  i* `) I
  22.             hash.Clear();
    1 t3 i$ S! q: I3 V6 m9 C8 O4 ~
  23.             hash = null;
    " P% Z% n+ m9 }: ]7 e
  24.             return list1;  W% }. i" \5 N$ D2 M% L. }( g9 O
  25.         }% j' @: e+ j% r7 i  i0 P1 H: Q
  26.         #endregion
复制代码
; T- T0 }) S* ?9 P1 D; y
9 e- C: B5 m$ W; c7 C& i/ G+ a+ P9 ]

点评

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

使用道具 举报

36

主题

164

广告币

251

积分

初级会员

Rank: 2

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

7 q6 W4 y* O3 N: w2 Z4 q: \3 g0 G十分感谢!!!非常感谢!!

点评

缺少一个gethtml,用下面这个:  详情 回复 发表于 2016-2-26 16:23
回复 支持 反对

使用道具 举报

2

主题

1369

广告币

1730

积分

高级会员

Rank: 4

积分
1730

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20: A/ M0 d# h# _9 G& t+ P
十分感谢!!!非常感谢!!
" B0 K, g, H* |; E& |
缺少一个gethtml,用下面这个:1 v) ?/ E2 M; S% H) r& v
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 : H) }6 k$ |" D8 [( L4 Q( U
  2.         {
    * P4 ~0 ]- ?2 r  L7 e- s
  3.             string strWebData = "error";
    ) ^/ \3 L+ g/ C* v1 l; a
  4.             try
    2 [: _; b( J0 o" V( ~: r4 a
  5.             {$ v0 p  y: K1 v8 X+ C. ~8 t
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    ! F4 K) ^- X0 n3 P% Q
  7.                 // 需要注意的:
    ( N2 r9 x) ?/ p. z; N) G5 w
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等   D  s  Q* N! D. F5 |' u
  9.                 //这是就要具体问题具体分析比如在头部加入cookie ; f& N5 t3 b# H( v. Y% x# M
  10.                 // webclient.Headers.Add("Cookie", cookie); ) `* l; X5 l! ]2 W% u& B
  11.                 //这样可能需要一些重载方法。根据需要写就可以了0 K) y9 g- Y$ ^5 ^
  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)");
    + H# x) x1 e7 x$ [9 y
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    ) X% V0 f1 a, t# x- _6 T
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 $ S2 c! ?5 k8 q" q$ O6 f
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    , V- {( v1 z" j& l! q/ ^
  16.                 //如果服务器要验证用户名,密码 ! u0 I5 T8 D& w, u9 R& t6 t( ]/ }
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 9 I% j* o- v. f) ?3 Q( B
  18.                 //myWebClient.Credentials = mycred; : n3 V5 |2 J& Y( h! [# _: M1 e
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    9 b9 Q# D6 c6 M, F
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    4 j- ^3 n& Y( V" Q  _
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    / D9 j+ j. N8 _$ P1 `4 N5 y, }
  22. . L0 k1 F# z+ a; j! Q4 `
  23.                 //获取网页字符编码描述信息 " X: i$ F1 X6 m4 r2 c% o: }( }
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);
    # J2 @* p8 S+ f4 y/ h% ^9 w
  25.                 string webCharSet = charSetMatch.Groups[2].Value;/ [$ |, M; `/ ]
  26.                 if (charSet == null || charSet == "")1 l& G+ [3 H: w5 M) Z% O
  27.                     charSet = webCharSet;
    2 ~; S  l0 T# P  {4 J5 v
  28.                 if (charSet.Length > 0)
    1 M: _' H$ e: T8 l3 K# y  J  q
  29.                 {; M) `4 r: l6 I" {8 ?
  30.                     charSet = charSet.Replace(""", "");( i* W& K! A! y8 j% {
  31.                 }- ~  U, c4 X& V! M- u
  32.                 if (UseUTF8CharSet)1 g* X/ i9 \* [0 @5 e% ~/ p
  33.                 {6 G% p: K9 I4 G: R  i$ q
  34.                     if (charSet == null || charSet.Length == 0)
    / {% w% G2 v6 ^. `! {
  35.                     {
    & O3 [, C5 i8 R  F) G) r" |: D
  36.                         charSet = "utf-8";
    " y) ]1 o6 G( n9 n( X) F
  37.                     }
    ; }& h  x1 m8 f
  38.                 }4 I' G! O* O' }3 H' r8 c% Q
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)) R4 I2 N% O' f2 k- C
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);7 f+ o' S$ y8 ~  V8 t- v1 V$ X

  41. $ Y. f: K0 u3 H! A* s; n
  42.             }! g. _' F5 h. p! X# {* o
  43.             catch (Exception). |9 B! l* k* ~
  44.             {6 A+ `6 [- Y6 B: \8 H8 u
  45.                 strWebData = "error";
    $ c+ e, s, i0 B- D  |. A
  46.             }
    ' A0 V* F# C( p+ z6 Y
  47.   G$ l# d- M: U2 y/ B& L  p! ?2 p, d
  48.             return strWebData;
    ; D: c1 I; h4 W7 S' W
  49.         }
复制代码
9 m% b* v) C; Z  R

6 `) x& \1 j1 {+ t
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 18:33 , Processed in 0.051353 second(s), 16 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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