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 虚拟卡⚡️FB BM不限额,短id账单户
BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理
虚拟信用卡+独立站收款全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)⚡️TikTok企业户,bm户,账单户
IPCola原生住宅IP⚡️$1.8/条双ISP提供TK企业新户老户、谷歌新户老户海外CL企业户源头PTM虚拟卡[全新卡BIN+高返点]
FB虚拟卡⚡️消费越多返现越多最大欧洲Nutra网盟BA找量 FB个号1块一个寻找顶级电商?AdsBranded等你!
TK老户/国内外端口/预审/加白SX.ORG 高质量代理⚡235+ 地区GG,FB,TK, 欧美源头, 欢迎合作广告位出租
8500万高质量住宅IP,助力各种需求虚拟卡返佣1%,国内持牌机构  
查看: 9772|回复: 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 抓取全站链接
    ' i- O0 C8 b7 v+ B
  2.         public static List<string> GetAllHref(string url)4 m3 w( q4 R) E/ b, G' ]/ K7 n( C! J
  3.         {
    ( K% u1 W5 C. b  t& e3 }1 I8 ~
  4.             List<string> allHref = new List<string>();  t# D, K8 j. W2 F( e6 g# m
  5.             try5 f. U3 q" ^3 m4 e: T+ H7 D7 \+ c& |
  6.             {2 R, f& O6 b1 n8 s4 s  t5 Z+ [
  7.                 string strhtml = soso.getHtml(url, "", true);. X8 `" q+ C/ ?  q! [/ O0 O; N7 _% c
  8.                 if (strhtml != "error")* v& X4 I9 Z# }% [
  9.                 {1 S" W! b* s  H/ w7 F0 G1 F7 j
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
    & y2 `6 T5 b9 E6 a; h7 o8 m
  11.                     MatchCollection mc = reg.Matches(strhtml);4 w' `, ?5 @* f% l, B# I
  12.                     foreach (Match m in mc)5 b2 t, ]0 Q; ]5 p1 p
  13.                     {
    . U. }9 o8 I$ \/ h
  14.                         Uri uri = new Uri(url);
    ! T7 r$ y! G4 ?& D" U. I
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);5 f4 Z9 E9 x, V8 Q1 w/ U/ H
  16.                         string fullUrl = "";
    6 P1 S7 X) E$ b
  17.                         if (m.Groups["url"].Value.StartsWith("http"))0 J% I6 {" w! o4 z! d
  18.                         {
    # R3 O) g1 o) D7 I; ~  _7 f2 A
  19.                             fullUrl = m.Groups["url"].Value;
    4 O+ k+ a- ~, }3 k% c  _' K
  20.                         }
    9 A9 w6 z1 n2 _3 z
  21.                         else# @5 `' C/ q; \  X% u4 C
  22.                         {
    1 @# |$ i5 W# P7 ~& O% _
  23.                             fullUrl = thisUri.ToString();
    3 w6 ?+ z( S( s: i
  24.                         }* v7 N8 n6 K+ _  r: M
  25.                         allHref.Add(fullUrl);# q: ^. B( |# Y2 d) l6 j$ K
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);9 i/ o3 G6 h, J
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);& W. E8 d- H) ]6 |2 z
  28.                         //Console.WriteLine("补全链接:" + fullUrl);
    4 z9 j( Z8 }! f* z5 s2 g5 U
  29.                         //Console.WriteLine("…………………………………………");, Y" m' ]# D  y  Y% a
  30.                     }/ M9 W( f0 v5 d" G% [% i$ Z
  31.                 }+ s4 E. p' J5 n5 @
  32.             }
    , t4 V& a, u" P6 O& G
  33.             catch (Exception ex)$ Z% W3 ?  s: H1 ^% z, N% Q
  34.             { }
    " `/ H" V/ R' J! E0 z
  35.             return allHref;
    / ?, R$ @9 @3 C/ l, W, Y- P& h; K
  36.         }, J. P+ _5 u* J2 d8 f
  37.         #endregion
复制代码
) r0 L! n+ V8 b6 |

; Z% M, r+ Y# S
  1. , a* j0 U$ }1 [! _

  2. # B" b# M# f( D' ?8 z# A

  3. 5 G, X  G: P0 F& ]2 Z- T0 Q
  4. #region 数据去重9 f1 u- L" E$ V( t
  5.         /// <summary>
    ) m& s0 i% Y1 _* j- S. ^) X/ U( Y4 E
  6.         /// List<string>去重# `, h3 C: s! q1 U  t9 u
  7.         /// </summary>! Y0 u. W" s  X: H  o
  8.         /// <param name="list"></param>7 s1 d7 p. F6 L! c6 e6 |$ M
  9.         /// <returns></returns>
    $ M( f+ m, D' z; y6 t/ f! L( Z
  10.         public static List<string> getUnqueList(List<string> list)
    4 P( w& Z0 Q5 p9 o; T' f" A. {
  11.         {5 B# ]! F: b7 c3 _  F' T: }' X
  12.             List<string> list1 = new List<string>();" L& g( R& |7 B, s
  13.             Hashtable hash = new Hashtable();
    " k( z8 {# V; H
  14.             foreach (string s in list): i, Q% r& Y) z! q6 {
  15.             {& V  U: Z% F& V) O! Q1 @- y4 m( r& {
  16.                 if (!hash.ContainsKey(s))
    4 \& p5 {0 l# w& J( n
  17.                 {7 G, E9 k7 N2 o
  18.                     hash.Add(s, s);
    & T: e" B  a: n
  19.                     list1.Add(s);
    - C( K$ r1 K7 N  [) y/ l
  20.                 }1 @+ c5 S/ j" y: \' D2 V4 M
  21.             }
    - J& `; F2 C. ], n% q* h
  22.             hash.Clear();! W' {1 v# |, p- [7 z3 r9 b% N
  23.             hash = null;
    , ?1 x# W/ Z$ k- n
  24.             return list1;$ O) h" R2 f: c& g
  25.         }; a9 D! I4 P; I2 [0 F% P& Q+ _, \
  26.         #endregion
复制代码

8 W; O, A4 ?, n  m
* h- _7 v  a% f& u: \1 Y8 r

点评

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

使用道具 举报

36

主题

210

广告币

294

积分

初级会员

Rank: 2

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

* E, b/ r( w3 E- R, j' S( P- M十分感谢!!!非常感谢!!

点评

缺少一个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
/ Q, Z5 Y7 n! y+ A4 j2 s" w0 x十分感谢!!!非常感谢!!
& N- V( n; N$ z5 l4 r( o7 Y- o
缺少一个gethtml,用下面这个:
$ {! _/ a/ g# B! B& h7 B
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码
      z4 o0 j, j5 d
  2.         {
    7 o: B0 D0 h: q) a2 @
  3.             string strWebData = "error";
    ! p) t1 m/ ~. m- U/ r
  4.             try
    * O& `# C+ t6 U7 W+ F9 Q7 L( k; ?! W
  5.             {
    ' @, U* E5 T3 a( M' Y7 I, J9 @4 v
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient 3 [2 e; o. e6 o9 O/ S: z1 E; c! I
  7.                 // 需要注意的:
    . w& {: Y9 q# [  q% Y- H& d
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 7 ^) H- Q' g' b- X, H
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
    # E/ B! X' O& v3 L
  10.                 // webclient.Headers.Add("Cookie", cookie);
    $ U: {7 A* m5 D/ M
  11.                 //这样可能需要一些重载方法。根据需要写就可以了0 \, H; U' ]" I; B7 L' [& k
  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)");$ ]. C  j& l0 T' o3 e3 q
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
    1 V7 r# r& o3 j9 {. X: C/ U' \
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    4 j9 S  ?: v# d- |1 A' |
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;
    - b& q. Z3 _9 l( ^* B8 j+ Y
  16.                 //如果服务器要验证用户名,密码 6 R+ Q! v! V/ H6 e' K( t
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); . _* }& N1 `* ?# @
  18.                 //myWebClient.Credentials = mycred; ; C! l9 R* K( C/ s/ w" c
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号)
    . I: Z7 }% P: ]0 V6 l7 A  s
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);5 ?, u8 a# g; C5 ]3 K: d+ `6 q' k- c
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);+ _. ], |# f; k" e  N) _

  22. $ y2 Z3 H- k: P# W$ w
  23.                 //获取网页字符编码描述信息 3 N; [0 P! R. P" g8 B
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);2 a2 ?& U0 t4 m$ N% b* W
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    ; [5 i& V& m9 q, e/ X$ J
  26.                 if (charSet == null || charSet == "")) q$ b: u( c' i
  27.                     charSet = webCharSet;
    4 P0 ]' |$ `3 k  L$ d0 P: z
  28.                 if (charSet.Length > 0)/ B2 {* K+ U8 ?; u) m
  29.                 {
    5 E0 Z* H! i! m' G' a
  30.                     charSet = charSet.Replace(""", "");
    ; l  a; N2 O' a' L: q) |
  31.                 }7 V4 c6 |4 a- Z: d
  32.                 if (UseUTF8CharSet)
    " V3 k3 Y% v$ o8 A7 D+ @7 \3 ^+ ]8 ^
  33.                 {; s* F" C+ u" n& z: Q3 r: ]
  34.                     if (charSet == null || charSet.Length == 0): E1 J, b$ P' y# n. ^
  35.                     {; N: l3 \6 G8 T+ C( L
  36.                         charSet = "utf-8";
    # b6 R7 T; c; I0 ]" g
  37.                     }& V* w- B6 |3 D: ~1 ~" C
  38.                 }( E  e" n+ [' y5 N3 U3 N
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)
    5 X8 q& K( w, p5 ~
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    # a+ m. s2 j. r4 g: b
  41. - l! g/ N! ?& Z% R3 P- w% O, v
  42.             }
    $ i! x) o; j9 t3 W- d* l% d, E
  43.             catch (Exception)5 X3 H! z# q8 E$ j2 u
  44.             {
    " c; ^6 |7 A& r8 T* R/ ]
  45.                 strWebData = "error";
    , ]" [2 L& g  J: V" \! X
  46.             }4 S9 l8 ~. A+ S: v# d) X  D1 f

  47. 4 e/ W8 r/ H! r+ z9 _6 t. C
  48.             return strWebData;
    ' E* C% Z6 z+ [6 Z
  49.         }
复制代码
4 O( e7 ~  B, V/ N* E, p

7 i0 m- y) \# M: S5 ]/ h
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-22 10:40 , Processed in 0.059473 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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