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;
            }
  • 相关阅读:
    Java编程规范
    java 编程军规
    数据库编程军规条例
    过滤重复记录(因为关联扩展表)
    根据子部门获取其到根部门的路径
    (原创)defparam的应用(Verilog,CPLD/FPGA)
    (原创)学习MCU的感悟_初级(MCU,经验)
    (原创)基于FPGA的调光流水灯(Verilog,CPLD/FPGA)
    (原创)基于MCU的频率可调,占空比可调的PWM实现(MCU,MCS-51/MSP430)
    (原创)动物照的情感与角度拍摄(摄影,欣赏)
  • 原文地址:https://www.cnblogs.com/Fooo/p/1848934.html
Copyright © 2011-2022 走看看