Webページの汎用クラスのダウンロード

2442 ワード

    /// <summary>

    ///  , 

    /// </summary>

    public class WebWrapper

    {

        public WebWrapper() { }

        public WebWrapper(string link) { Link = link; }



        #region Download html



        public string Link { get; set; }

        public string DownLoadHtml(string link)

        {

            string htmlString = string.Empty;

            try

            {

                WebRequest webRequest = System.Net.WebRequest.Create(link);



                webRequest.Method = "GET";

                webRequest.ContentType = "application/x-www-form-urlencoded";

                using (StreamReader sr = new StreamReader(webRequest.GetResponse().GetResponseStream()))

                {

                    htmlString = sr.ReadToEnd();

                }

            }

            catch (Exception ex)

            {

                throw new ApplicationException(string.Format("Error Downloading CurrencyRate: {0}", ex.Message));

            }

            return htmlString;

        }

        public string DownLoadHtml()

        {

            if (string.IsNullOrEmpty(Link))

                throw new ApplicationException("Please input web address");

            return DownLoadHtml(Link);

        }



        #endregion



        #region Get matched content



        public string GetContent(string html, string regexExpress)

        {

            Regex re = new Regex(regexExpress);

            MatchCollection ms = re.Matches(html);

            if (ms == null || ms.Count == 0)

                throw new ApplicationException("Can not find matched content");



            return ms[0].ToString();

        }



        public string GetContent(string regexExpress)

        {

            string html = DownLoadHtml();

            return GetContent(html, regexExpress);

        }



        #endregion



        #region Regex Properties



        public string BeginConstruction = "(?<=({0}))";

        public string EndConstruction = "(?=({0}))";

        public string RegexBeginExpression(string begin) { return string.Format(BeginConstruction, begin); }

        public string RegexEndExpression(string end) { return string.Format(EndConstruction, end); }

        public string RegexAnyExpression { get { return "[.\\s\\S]*?"; } }



        #endregion

    }