AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
⚡️AdsPower:安全不封号,高效自动化E.PN 虚拟卡FB BM不限额,短id账单户BINOM TRACKER 60% OFF!
比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款
全球虚拟卡, 支持U充值Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)
FB 三不限源头 - 自助下户充值转款各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户提供TK企业新户老户、谷歌新户老户
海外CL企业户源头FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量高质量代理⚡️住宅⚡️移动
原生住宅⚡️双isp⚡️适合跨境电商TK白名单老户|兼职广告可投Miluproxy⚡️全球住宅IP代理Top 3联盟收款/海外资金下发/服贸结汇
⚡比特指纹浏览器+云手机, 4.5折起广告位出租8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构
查看: 9675|回复: 7

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

[复制链接]

36

主题

198

广告币

282

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1475

广告币

1818

积分

高级会员

Rank: 4

积分
1818

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接
    ) _+ F" G6 V: n3 R4 y
  2.         public static List<string> GetAllHref(string url)
    1 E1 Z0 {' C2 p1 _) z, `6 a; F
  3.         {
    $ @- ^2 S! }; Q4 \& r
  4.             List<string> allHref = new List<string>();
    0 U% I+ y+ V5 Y/ s" U" X! M
  5.             try
      D8 q/ O3 x4 j% J
  6.             {/ w: t6 X# U1 m0 W) D/ b
  7.                 string strhtml = soso.getHtml(url, "", true);& A* [* r' O# E% \3 i% b
  8.                 if (strhtml != "error")4 B* [. Q3 k" G
  9.                 {2 e3 h! M+ K- u
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    ! z/ P6 @; ?" V" n4 n, ~" _
  11.                     MatchCollection mc = reg.Matches(strhtml);
    : r( C1 T4 ^% I3 Q
  12.                     foreach (Match m in mc)
    ; Q6 Q2 G/ p; l' r* i3 d, ~
  13.                     {: I: E1 h# ^3 \. q
  14.                         Uri uri = new Uri(url);9 f& [7 }8 I9 ^/ M% |
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    6 \+ B8 Z1 d6 ^. w
  16.                         string fullUrl = "";* _5 `6 t, }! q
  17.                         if (m.Groups["url"].Value.StartsWith("http"))/ H2 }7 ^3 X" g5 p
  18.                         {3 n6 m, B" W4 J: G
  19.                             fullUrl = m.Groups["url"].Value;6 p) Q6 H2 ~2 @0 d6 L8 F
  20.                         }& @3 w4 j, Y" P9 C/ K5 H  h
  21.                         else
    ; l- ]* m$ M; [6 ]2 N1 N) ?2 r
  22.                         {
    - h" E. h; N  E+ J# \9 q
  23.                             fullUrl = thisUri.ToString();4 U' B! W0 u! j+ `
  24.                         }3 Z% Q, ]  q9 x8 w  C
  25.                         allHref.Add(fullUrl);
    4 u; e: I$ @0 e! u8 q! g2 e
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    2 Y- ^7 k8 s. f. U2 J7 q& M
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);. L6 w$ ^* T$ e# t+ r
  28.                         //Console.WriteLine("补全链接:" + fullUrl);9 |$ Y$ I4 D' S! ^
  29.                         //Console.WriteLine("…………………………………………");
    7 }7 h6 H! C4 N& x2 s
  30.                     }9 h. u  h. I9 \8 e( F! B, |* O
  31.                 }  \4 w* K/ }( E$ @
  32.             }6 ?2 g; D( v: f7 U
  33.             catch (Exception ex)
    ( r. N$ E! E, ?) [/ p6 y
  34.             { }2 {) B, ?' ^; ~- B8 O: }& s
  35.             return allHref;+ s6 i! o+ l) X9 H. h
  36.         }
    $ I8 f1 x" }' m6 M4 V, x" ~/ Z
  37.         #endregion
复制代码

% t" Y& \7 B8 y* B$ i" s# u( i

  1. ( j9 p8 u6 z1 D2 l' H  o- e
  2. % f4 L- s. A- S% o" z% F. Z7 A% X
  3. 7 {0 h. _3 B6 W' a" Y7 \
  4. #region 数据去重
    7 p4 K4 J: l5 f8 f5 ]9 W, `5 U
  5.         /// <summary>
    " d" }; ^3 ?2 J) g( G
  6.         /// List<string>去重
    7 K1 A* {7 x0 C% t
  7.         /// </summary>
    0 P( r6 ]; W( e+ v
  8.         /// <param name="list"></param>8 R2 k) P- `. W0 F
  9.         /// <returns></returns>
    . U/ k5 U/ A6 C4 U: {/ F3 l
  10.         public static List<string> getUnqueList(List<string> list)
    / S( N5 l% I( W& g' H
  11.         {! r! _0 d- B8 D2 G
  12.             List<string> list1 = new List<string>();( Z$ N; p" p4 v# m: y4 f' r
  13.             Hashtable hash = new Hashtable();
    4 c" D9 v9 R8 j/ S7 X3 Z
  14.             foreach (string s in list)/ E& h2 q; V- J7 z9 B6 E
  15.             {
    6 S- S: q9 ^6 K7 ?; L. u
  16.                 if (!hash.ContainsKey(s))7 @& ?7 a- R% j, m
  17.                 {
    " q$ f4 N' S$ J& `1 W  c: g
  18.                     hash.Add(s, s);
    3 s6 Z3 s( R& i" [# c# m; X
  19.                     list1.Add(s);  s. l( \& Q6 |& @
  20.                 }
    4 h) p/ @; j4 H6 k& Q, [1 \' m
  21.             }
    ' x# k; B! G& g! V; T
  22.             hash.Clear();
      I+ U/ U/ s. u% Y
  23.             hash = null;
    ; I8 e6 X5 i, z; A0 z& o/ d
  24.             return list1;$ l. J& v- L$ u
  25.         }, m9 A) O" y# U; g0 m
  26.         #endregion
复制代码

7 G& S9 L& s; R% m) t0 ~. `( i& z% [0 b- H, R4 x$ E7 n

点评

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

使用道具 举报

36

主题

198

广告币

282

积分

初级会员

Rank: 2

积分
282
 楼主| 发表于 2016-2-26 16:20:16 | 显示全部楼层
1 K8 q1 n6 ~6 J2 v6 Y
十分感谢!!!非常感谢!!

点评

缺少一个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
* `/ f2 `( y- ?2 l: i- V+ p十分感谢!!!非常感谢!!
) a! V# V  C, P) D* n6 |
缺少一个gethtml,用下面这个:
# M; Y& x3 x# m# A- q/ c" u! b  o- P
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 2 v# A8 ^/ e5 y) X( d& \0 c
  2.         {3 v/ j1 _' w) W( N% J
  3.             string strWebData = "error";8 q" @2 ?0 l0 \/ A( S
  4.             try
    1 \& y/ a- z3 @% L' }/ ?
  5.             {! S0 C1 v: ^6 |. U9 u$ ]2 ^
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    * a% Z- F5 H8 V, i9 v" k+ v  `! S
  7.                 // 需要注意的:
    * j) E! s: y* E$ [# j
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    . L" l6 @0 B1 ^: w  j- T. h1 A. n
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    5 b* m8 P7 X3 c, M0 O
  10.                 // webclient.Headers.Add("Cookie", cookie); ; v# k' U, r2 y) ~1 F
  11.                 //这样可能需要一些重载方法。根据需要写就可以了" d& w- B: ~4 ?) j% R5 D
  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)");0 n: L6 U) M8 U$ c1 q
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    " R$ C. b/ x$ a* w
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ; C7 B' I# y7 e" O; Q7 ^$ J) h
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    " h5 ~6 \. t% p, U3 y0 h
  16.                 //如果服务器要验证用户名,密码
    * p) g2 {: G- a/ u4 b
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 3 v! P- b2 L) `- }. i2 U) H
  18.                 //myWebClient.Credentials = mycred; 6 g/ d7 D: X# r! {& h
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) $ e. Q$ P% P1 q) |, ]
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);2 e6 v5 V) u6 }6 ?+ u* s
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    4 f; Z1 y+ B; S3 t2 x+ t

  22. , A% u6 [5 U& \. O* G! {
  23.                 //获取网页字符编码描述信息
    ! G8 b( ]* c7 |( W
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);+ X) J, Q2 g: f8 E
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    6 F, s- `9 Q7 W$ M5 z9 {
  26.                 if (charSet == null || charSet == "")' P' ?, a; X! Y- a1 w5 `
  27.                     charSet = webCharSet;: v5 r' o  C6 o( h% i) R; |
  28.                 if (charSet.Length > 0)- ?5 w3 {/ c7 v4 E! _( w. x0 {0 E
  29.                 {+ B# @$ C, V4 E' W. d$ w3 B
  30.                     charSet = charSet.Replace(""", "");
    8 j3 J' n; \& b! }; K4 W2 A0 O
  31.                 }
    1 O3 i  u) K* k$ Z
  32.                 if (UseUTF8CharSet)" a% U2 n; O3 {9 A% q" @: m
  33.                 {5 S) B7 h* R7 n( ?$ u- y! M
  34.                     if (charSet == null || charSet.Length == 0)
    ' J8 u& P5 F/ _
  35.                     {, _" F/ d4 P: B  g
  36.                         charSet = "utf-8";
    ; Y) \, h' K7 @. w- G
  37.                     }' q9 H% K! S0 o; c0 I4 c
  38.                 }
    & J# {' p% _' }' o3 N
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default). q- T' V/ d  ?0 G6 D( H
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    6 b1 l' T9 d- w9 n+ H7 t4 v3 {
  41. - s+ ~% h( W3 l* ]
  42.             }
    4 A+ A- P. g  F' j8 q. w9 h% X! M
  43.             catch (Exception)
    9 f% W7 u; t1 F( Q7 x* X$ R
  44.             {4 a/ J: ~9 V4 [8 z5 j% E; A5 U" q
  45.                 strWebData = "error";
    . p( `& X; c0 G% [+ p+ t- ~4 l3 ^: e
  46.             }
    6 B* Z% |# y0 W5 `, \3 E
  47. / _0 \* @0 ]& P6 t0 Y  z
  48.             return strWebData;8 v+ W# _# k) m* U6 c, p, G$ t
  49.         }
复制代码
0 n& w4 Z( _9 E; Z
* M' F& ]" N  L
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-25 10:13 , Processed in 0.057369 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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