zoukankan      html  css  js  c++  java
  • C#:如何得到一个网页的所有a标记 herf 链接代码



    using  System.IO;
    using  System.Text;
    using  System.Text.RegularExpressions;
    using  System.Net;

    1.先取得网页的原代码

     Uri url=new Uri("http://www.blogjava.net/wujun");
                HttpWebRequest request
    =(HttpWebRequest) WebRequest.Create(url);
                HttpWebResponse response 
    = (HttpWebResponse)request.GetResponse();
                Stream stream 
    = response.GetResponseStream();
                StreamReader sr 
    = new StreamReader(stream);
                
    string str=sr.ReadToEnd();
                sr.Close();
                stream.Close();
                response.Close();

    得到网页的html源代码以后。再根据源代码分析 所有 <a href ="url">   最后得到 href后面  url的链接地址

    正则表达式
        Regex RegExFindHref = new Regex(@"<a\s+([^>]*\s*)?href\s*=\s*(?:""(?<1>[/\a-z0-9_][^""]*)""|'(?<1>[/\a-z0-9_][^']*)'
    |(?<1>[/\a-z0-9_]\S*))(\s[^>]*)?>(?<2>.*?)</a>
    ", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);



    循环读出 连接地址

         for (Match m = RegExFindHref.Match(str); m.Success; m = m.NextMatch())
                {
                   TextBox1.Text
    += m.Groups[1].ToString()+"\n";
                

                }


    运行后
    TextBox1 将显示分析后的所有网页的连接 :

    http://www.dotlucene.net/
    http://www.castleproject.org/
    http://www.codeplex.com/
    http://www.codeproject.com/
    http://www.asp.net/
    http://www.nhibernate.org/
    http://www.blogjava.net/wujun/CommentsRSS.aspx
    http://www.blogjava.net/wujun/archive/2006/10/23/47150.html#76745
    http://www.blogjava.net/wujun/archive/2006/10/23.html
    http://www.blogjava.net/wujun/archive/2006/10/23/76769.html
    http://www.blogjava.net/wujun/archive/2006/10/23/76769.html
    http://www.blogjava.net/wujun/archive/2006/10/23/76769.html#FeedBack
    http://www.blogjava.net/wujun/admin/EditPosts.aspx?postid=76769
    http://www.blogjava.net/wujun/AddToFavorite.aspx?id=76769
    http://www.blogjava.net/wujun/archive/2006/10/20.html
     ......
    ..............
     .........................等等等。。。

    代码
     /// <summary>
            
    /// C# :从一段字符串中,输入开始和结束的字符,取中间的字符
            
    /// </summary>
            
    /// <param name="str">一段字符串</param>
            
    /// <param name="strStart">开始字符</param>
            
    /// <param name="strEnd">结束字符</param>
            
    /// <returns></returns>
            public static string AnalyzeMessage(string str, string strStart, string strEnd)
            {
                
    string Result = "";
                
    int i = str.IndexOf(strStart);
                
    if (i >= 0)
                {
                    
    int j = str.IndexOf(strEnd, i + strStart.Length);
                    
    if (j > 0)
                    {
                        Result 
    = str.Substring(i + strStart.Length, j - i - strStart.Length);
                    }
                }
                
    return Result;
            }
  • 相关阅读:
    内存泄漏 Memory Leaks 内存优化 MD
    Handler Thread 内部类引起内存泄露分析
    为什么不取消注册BroadcastReceiver会导致内存泄漏
    WebChromeClient 简介 API 案例
    WebViewClient 简介 API 案例
    java.net.URI 简介 文档 API
    android.net.Uri 简介 API
    RV 多样式 MultiType 聊天界面 消息类型 MD
    JS函数声明与定义,作用域,函数声明与表达式的区别
    CSS中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  • 原文地址:https://www.cnblogs.com/Fooo/p/1848934.html
Copyright © 2011-2022 走看看