AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用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, 无限带宽
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单广告位出租 
查看: 9142|回复: 7

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

[复制链接]

36

主题

164

广告币

251

积分

初级会员

Rank: 2

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

使用道具 举报

2

主题

1360

广告币

1722

积分

高级会员

Rank: 4

积分
1722

社区QQ达人

发表于 2016-2-26 16:17:11 | 显示全部楼层
  1. #region 抓取全站链接% Q- n1 Q. s4 t5 E$ ?( M9 X  n7 N
  2.         public static List<string> GetAllHref(string url)
    : h1 I8 S8 T$ h, S8 h4 i
  3.         {
    " B* O7 n# N: ]9 o' h
  4.             List<string> allHref = new List<string>();
    6 I* O; Y% |0 P& ~! m; v5 K0 o
  5.             try
    - j. `1 G9 Z& I3 R; l6 F5 d5 W; X
  6.             {. O7 {5 [8 I7 d1 H
  7.                 string strhtml = soso.getHtml(url, "", true);
    # @  ?$ \; @* c: R: R; |
  8.                 if (strhtml != "error")
    - w( O/ r3 p2 J4 S
  9.                 {
    . F6 U+ E! `* V: J2 G0 Z
  10.                     Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");6 T8 `/ V( G+ ?( a# n
  11.                     MatchCollection mc = reg.Matches(strhtml);: q) u3 A  b  ?7 Q2 I
  12.                     foreach (Match m in mc); ^) A! ]# l& u4 i2 T
  13.                     {
    8 ~6 _7 ?- B3 `) N7 c3 W
  14.                         Uri uri = new Uri(url);
    ! D$ X( S4 T: u" l8 o5 u. D/ _
  15.                         Uri thisUri = new Uri(uri, m.Groups["url"].Value);
    3 p$ \, k( B: a/ v- N
  16.                         string fullUrl = "";2 u- `% f5 d( N
  17.                         if (m.Groups["url"].Value.StartsWith("http"))# n) J2 W# W0 V: h5 a
  18.                         {
    $ b. Z+ Q, y& t0 j1 v/ u1 U
  19.                             fullUrl = m.Groups["url"].Value;
    # ~: D* l/ y! ~  s0 V+ z: e
  20.                         }* z) P0 I1 q# M
  21.                         else0 b0 v% G8 e5 e5 v" [3 {3 V+ A1 V
  22.                         {
    ' I7 B* \# {9 D& x& a3 j
  23.                             fullUrl = thisUri.ToString();! t. F! k4 k$ k5 }
  24.                         }
    % n& y; `& |  \) \6 Y: s, D' R( Q
  25.                         allHref.Add(fullUrl);: i5 q. b; ^' e7 ^
  26.                         //Console.WriteLine("原链接:" + m.Groups["url"].Value);
    ! Y$ T, W/ F7 E8 n/ i6 N
  27.                         //Console.WriteLine("文本标记:" + m.Groups["text"].Value);
      g6 |( h. q6 {6 I9 z! w6 h
  28.                         //Console.WriteLine("补全链接:" + fullUrl);2 c8 N( M( u& }7 Y. D  A: }
  29.                         //Console.WriteLine("…………………………………………");6 W+ c5 r2 \0 V' ~/ R" X& o; D
  30.                     }9 Y* W  U$ x& t4 w2 W
  31.                 }
    + y4 G( D7 G- Q6 x9 h
  32.             }
    0 k9 K3 V5 ?* t' F) @
  33.             catch (Exception ex)
    8 I  ?0 K/ K  ~8 h
  34.             { }
    % E/ Y7 a" G$ {$ m9 M. p
  35.             return allHref;
    ; F3 a% D1 S% W
  36.         }
    % g9 ?2 i* T+ ^+ f
  37.         #endregion
复制代码
4 q: p% f0 W  E- o" ~

- K4 @* m- C. q3 P6 n% ?; ]

  1. + C/ G* _1 p2 g' Z& N" J" C; X
  2. & _( k- u8 n# F" U2 x' F( J

  3. & g* a0 R; h' F& _. F
  4. #region 数据去重
    5 H! n  g. H4 y) y
  5.         /// <summary>
    # b4 t; d0 C# m# X
  6.         /// List<string>去重
    ( `  C& e3 |) d1 d0 d( r
  7.         /// </summary>
    ' Z& Y: s! e& Y" h
  8.         /// <param name="list"></param>! l) F4 }9 u4 T, \5 q
  9.         /// <returns></returns>
      E3 b  t/ @8 ]+ q4 s5 @) r" z
  10.         public static List<string> getUnqueList(List<string> list)6 e. N7 b5 Q, [% @8 Y$ C
  11.         {
    : |/ T8 ^6 f1 o$ P* _& E) D, }% N
  12.             List<string> list1 = new List<string>();
    1 D* D! f5 K1 P% \5 q- W
  13.             Hashtable hash = new Hashtable();7 C, b7 |: Z7 x7 p
  14.             foreach (string s in list)9 Y5 Z" t; g  @$ I
  15.             {2 A7 c" \4 T, v4 `( H# G* T% s9 q
  16.                 if (!hash.ContainsKey(s))
    * ~; a; h$ P. J4 @( d) w; S6 d# K
  17.                 {
    + m# L- x' B; z7 G3 u- e& ^0 H
  18.                     hash.Add(s, s);
    # H7 [1 G! u7 C, n" X
  19.                     list1.Add(s);
    9 l" m$ O! w3 d6 d
  20.                 }
    6 y# _  r0 N, ]- ^" J) m
  21.             }
    $ l5 w2 b4 Z% g& h5 a; Y/ L4 ]. O
  22.             hash.Clear();7 N, J% ?: O& i2 ?9 a/ ]; G2 E' }4 f
  23.             hash = null;# f5 V$ {; S) g% s5 k; J9 X
  24.             return list1;4 q4 i, V' Q0 j4 u; H3 _$ G1 d& ^
  25.         }1 P& I! u4 A% \( J# a, [; W8 n
  26.         #endregion
复制代码

7 z8 x0 O0 \: U5 u
2 m# s( e" U  r5 W" Z  _* n

点评

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

使用道具 举报

36

主题

164

广告币

251

积分

初级会员

Rank: 2

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

* w$ G$ c8 N% y, }十分感谢!!!非常感谢!!

点评

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

使用道具 举报

2

主题

1360

广告币

1722

积分

高级会员

Rank: 4

积分
1722

社区QQ达人

发表于 2016-2-26 16:23:12 | 显示全部楼层
guys 发表于 2016-2-26 16:20* q. \, ^$ h9 Q$ L7 w
十分感谢!!!非常感谢!!

4 P, t; v$ A/ s+ d* R) Z/ F缺少一个gethtml,用下面这个:
  `; |% o( n6 r' C
  1.      public string getHtml(string url, string charSet, bool UseUTF8CharSet)//url是要访问的网站地址,charSet是目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 " M% _4 n3 z5 {2 q8 Z9 i
  2.         {1 e* I- U7 S2 k
  3.             string strWebData = "error";
    " n$ y  R" d' C8 g% [5 V& [
  4.             try
    ; f& Z" d9 r( J9 M5 V
  5.             {% B) \; `% E5 U" x% c
  6.                 WebClient myWebClient = new WebClient(); //创建WebClient实例myWebClient
    % N% a) ~7 v, U" u# B+ |
  7.                 // 需要注意的: 7 b" `+ X/ d0 ~0 t
  8.                 //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等
    8 G) {! A6 S! Y9 J6 D: r7 |7 J8 \6 F) L
  9.                 //这是就要具体问题具体分析比如在头部加入cookie
      U: O: m# f( b) L5 V: j
  10.                 // webclient.Headers.Add("Cookie", cookie); - r7 s! t0 h, f) ?& s. f6 t+ w
  11.                 //这样可能需要一些重载方法。根据需要写就可以了* d7 L) _! n* m
  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)");
    5 @9 |. B$ `' s% ^' U; h2 Y, P
  13.                 //myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");1 P2 }9 q& p' ^7 o
  14.                 //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。
    ) p5 C7 \! k1 c! W8 E% h' p
  15.                 myWebClient.Credentials = CredentialCache.DefaultCredentials;( n0 V" j  f# ~
  16.                 //如果服务器要验证用户名,密码 4 S+ @* ^1 S; \0 ^
  17.                 //NetworkCredential mycred = new NetworkCredential(struser, strpassword); * Z4 p6 D; D. i' Q- l1 P8 s  M
  18.                 //myWebClient.Credentials = mycred;
    - C5 u3 d3 Z0 c
  19.                 //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 2 X/ k0 M5 h; _9 r" q8 I3 [
  20.                 byte[] myDataBuffer = myWebClient.DownloadData(url);
    + T" D' \: i' n1 z! |, M) A  }: [0 q, l
  21.                 strWebData = Encoding.Default.GetString(myDataBuffer);
    ' X, {' D4 D2 k/ f7 z

  22. " e/ \1 G4 H) t
  23.                 //获取网页字符编码描述信息 . q. l& X. m# a$ m: L
  24.                 Match charSetMatch = Regex.Match(strWebData, "<meta([^<]*)charset=([^<]*)"", RegexOptions.IgnoreCase | RegexOptions.Multiline);' G! W4 Z5 b$ T* A& G2 C$ y  n" P
  25.                 string webCharSet = charSetMatch.Groups[2].Value;
    " e# G! N, _; T/ a! @/ e
  26.                 if (charSet == null || charSet == "")
    7 _; S& o+ g+ n/ G: M. N; h6 F
  27.                     charSet = webCharSet;
    ( ?9 l" _+ R% C' y
  28.                 if (charSet.Length > 0)# {2 H* j6 i& y: U$ x' p) h
  29.                 {
    & Q7 ~% f+ t; Y3 i' H
  30.                     charSet = charSet.Replace(""", "");, j" `6 V* {- D2 i0 S3 w
  31.                 }
    : I$ B" t6 X- `( ]% Z: d: e- ]
  32.                 if (UseUTF8CharSet)6 ]# B4 J& t5 p$ e1 E
  33.                 {- N+ ^' R- I( s
  34.                     if (charSet == null || charSet.Length == 0)
    & v8 \8 C* Q' j+ m. z* n) C, B
  35.                     {
    8 p# |' G! @, o/ {, t$ R* b) p8 h
  36.                         charSet = "utf-8";
    : ~( j7 S8 H3 d1 V+ o% @% u
  37.                     }
    - e, B) w9 j: y4 b8 Z7 `& L
  38.                 }2 |9 T  o7 ]! `2 b5 E; D0 H
  39.                 if (charSet != null && charSet != "" && Encoding.GetEncoding(charSet) != Encoding.Default)$ h, c! n6 Z* A
  40.                     strWebData = Encoding.GetEncoding(charSet).GetString(myDataBuffer);
    " V$ |$ z3 S- A  i% z3 W" [! y) T
  41. + ?/ E3 l/ {9 v. \4 l1 n
  42.             }
    ) ~7 R2 ]1 U7 n7 ^2 p* X
  43.             catch (Exception)& p! a! |6 v0 A/ z
  44.             {
    + k, Q: D. _+ a+ p% r) A% L
  45.                 strWebData = "error";# i) L" g) u7 d7 d" l5 U
  46.             }" W7 [+ `; C1 s2 P- ]9 ?/ w

  47. 6 B3 U* ^' a" L
  48.             return strWebData;, k4 O8 \5 S6 R# J: I. A
  49.         }
复制代码

9 h8 W# z. o: D5 M; S. j. u& E, h- a
回复 支持 反对

使用道具 举报

0

主题

0

广告币

13

积分

新手上路

Rank: 1

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 22:34 , Processed in 0.048420 second(s), 17 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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