• href= 正则表达式


    获取网页的新闻连接:

    代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Text.RegularExpressions;
    using System.Text;
    using System.Net;
    namespace WebApplication4
    {
        
    public partial class _Default : System.Web.UI.Page
        {
            
    protected void Page_Load(object sender, EventArgs e)
            {
                
    string strNewsUrl = ConfigurationSettings.AppSettings["NewsUrl"];
                
    string strHTML = DownLoadHtml(strNewsUrl);

                
    int begin = 0;
                
    string strBegin = ConfigurationSettings.AppSettings["BeginStr"];
                
    string strEnd = ConfigurationSettings.AppSettings["EndStr"];
                
    string strContent = "";
                
    if (strBegin.Trim() != "" && strEnd.Trim() != "")
                    strContent 
    = GetHTMLContent(strHTML, strBegin, strEnd, ref begin);
                
    else
                    strContent 
    = strHTML;
                MatchCollection ms 
    = GetUrlFromHtml(strContent);
               
    if (ms.Count > 0)
                    {
                        Response.Write(
    "<marquee onmouseover=this.stop() onmouseout=this.start() scrollDelay=110 class=a><font color=#ff0000>最新消息:</font>");

                        
    foreach (Match m in ms)
                        {
                            
    if (m.Groups[1].Value.Trim() != "" && m.Groups[3].Value.Trim() != "")
                            {

                               
    string href = string.Format("<a href='{0}' title='{2}'  target='_blank'>{1}</a>&nbsp;&nbsp;&nbsp;&nbsp;", m.Groups[1].Value.Trim(), m.Groups[3].Value.Trim(), m.Groups[3].Value.Trim());

                                Response.Write(href);
                            }
                        }
                        Response.Write(
    "</marquee>");
                    }
            }
          
            
    #region 获取网页内容

            
    public static string DownLoadHtml(string url)
            {
                
    string output = "";
                Encoding encode 
    = Encoding.UTF8;
                WebClient webclient 
    = new WebClient();
                
    //System.Net.GlobalProxySelection.Select = System.Net.GlobalProxySelection.GetEmptyWebProxy();

                
    try
                {
            //如果使用代理上网,则使用如下方法,默认是使用IE代理设置
                   //webclient.Proxy = new WebProxy("192.168.8.1"808);
                    webclient.Headers.Add(
    "Referer", url);

                    
    byte[] buff = webclient.DownloadData(url);
                    output 
    = encode.GetString(buff);
                }
                
    catch
                {
                }
                
    return output;
            }

            
    public static string GetHTMLContent(string strTarget, string strBegin, string strEnd, ref int begin)
            {
                
    string result;
                
    int posBegin, posEnd;
                posBegin 
    = strTarget.IndexOf(strBegin, begin);
                
    if (posBegin != -1)
                {
                    posEnd 
    = strTarget.IndexOf(strEnd, posBegin + strBegin.Length);
                    
    if (posEnd > posBegin)
                    {
                        result 
    = strTarget.Substring(posBegin, posEnd + strEnd.Length - posBegin);
                        begin 
    = posEnd + strEnd.Length;
                        
    return result;

                    }
                }
                begin 
    = -1;
                
    return "";
            }

            
    //过滤特殊字符
            public static string RepalceStr(string str)
            {

                str 
    = str.Replace("\r\n""");
                str 
    = str.Replace("\"""");
                str = str.Replace("""");
                str 
    = str.Replace("\t""");
                str 
    = str.Replace("&nbsp;""");
                str 
    = str.Replace("'""");
                str 
    = str.Replace("\r""");
                str 
    = str.Replace("\n""");
                
    return str;
            }

            
    public static MatchCollection GetUrlFromHtml(string strContent)
            {
                
    //string regex = @"\<a.*href\s*=\s*(?:""(?<url>[^""]*)""|'(?<url>[^']*)'|(?<url>[^\>^\s]+)).*\>(?<title>[^\<^\>]*)\<[^\</a\>]*/a\>";
                
    //string regex = @"\<a.*href\s*=\s*(?:""(?<url>[^""]*)""|'(?<url>[^']*)'|(?<url>[^\>^\s]+)).*\>(?<title>[^\<^\>]*)\<[^\</a\>]*/a\>";
                
    //string regex = @"\<a.*href\s*=\s*(?:""(?<url>[^""]*)""|'(?<url>[^']*)'|(?<url>[^\>^\s]+))\s*(.*)\s*title=[""|'](?<remarktext>[\s\S])[""|'].*\>(?<title>[^\<^\>]*)\<[^\</a\>]*/a\>";

                
    //string regex= "href=\"(?<url>[\\s\\S]*?)\"[\\s\\S]title=\"(?<remarktext>[\\s\\S]*?)\"[\\s\\S]*?>(?<title>[\\s\\S]*?)</a>";
                
    //string regex = "<a.*href\\s*=\\s*(?:\"(?<url>[^\"]*)\"|'(?<url>[^']*)'|(?<url>[^\\>^\\s]+)).*\\>[\\s\\S]title=\"(?<remarktext>[\\s\\S]*?)\"[\\s\\S]*?>(?<title>[\\s\\S]*?)</a>"; 

                
    //string regex = "href=\"(?<url>[\\s\\S]*?)\"[\\s\\S]*?title=\"(?<remarktext>[\\s\\S]*?)\"[\\s\\S]*?>(?<title>[\\s\\S]*?)</a>";
                
    //string regex = "href=['|\"](?<url>[\\s\\S]*?)['|\"][\\s\\S]*?title='(?<remarktext>[\\s\\S]*?)'[\\s\\S]*?>(?<title>[\\s\\S]*?)</a>";

                
    //string regex = "href=(\'|\\\\\")(?<url>[\\s\\S]*?)(\'|\\\\\")[\\s\\S]*?title=\\\\\"(?<remarktext>[\\s\\S]*?)\\\\\"[\\s" +"\\S]*?>(?<title>[\\s\\S]*?)</a>";
                string regex = "<a[\\s]+href[\\s]*=[\\s]*\"([^<\"]+)\" target=\"([^<\"]+)\" title=\"([^<\"]+)\"><span class=\"([^<\"]+)\">([^<\"]+)</span></a>";  
              
                
    //string p = "href=[\"](?<url>[\\s\\S]*?)[\"][\\s\\S]*?title='(?<remarktext>[\\s\\S]*?)'[\\s\\S]*?>(?<title>[\\s\\S]*?)</a>";

                Regex reg 
    = new Regex(regex, RegexOptions.IgnoreCase);
                MatchCollection ms 
    = reg.Matches(strContent);
                
    return ms;

            }

            
    public static string GetNewsUrl()
            {
                
    if (ConfigurationSettings.AppSettings["NewsUrl"== "")
                    
    return "";
                
    else
                    
    return "../desktop/getnewsUrl.aspx";

            }
            
    #endregion
        }
    }

    web.config源码:

    代码
        <appSettings>
            
    <!--新闻获取网址-->
            
    <add key="NewsUrl" value="http://jyj.cixi.gov.cn/"/>
            
    <add key="BeginStr" value="var teshu_shu = 1;"/>
            
    <add key="EndStr" value="/script"/>
            
    <add key="expressMatch"/>
           
    </appSettings>
  • 相关阅读:
    14-3 SQL Server基本操作
    14-2 SQL语言简介
    14-1数据库基础--数据库相关技术
    2.9_Database Interface ADO结构组成及连接方式实例
    2.8_Database Interface ADO由来
    2.7_Database Interface OLE-DB诞生
    容器化技术之K8S
    容器化技术之Docker
    NLP(二)
    cmake
  • 原文地址:https://www.cnblogs.com/zhangzt/p/1884398.html
Copyright © 2020-2023  润新知