protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string start = "<div class=\"shoucang\">";
            string end = "<div class=\"pagebreak\">";
            string url = "http://www.chinaz.com/Webmaster/Club/1021954U2009.html";
            this.txt1.Text = RemoveHTML(SubHtml(GetHtml(url), start, end));            
        }
    }    /// <summary>
    /// 获取网页内容
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    public static string GetHtml(string url)
    {
        string result = "";
        try
        {
            WebRequest request = WebRequest.Create(url);
            WebResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("GBK"));
            result = reader.ReadToEnd();
        }
        catch
        {
            result = "";
        }
        return result;
    }    /// <summary>
    /// 截取指定区域的内容
    /// </summary>
    /// <param name="htmlCode">源码</param>
    /// <param name="strBegin">开始位置</param>
    /// <param name="strEnd">结束为止</param>
    /// <returns></returns>
    public string SubHtml(string htmlCode, string strBegin, string strEnd)
    {
        string NewsTitle = "";
        Regex regex1 = new Regex("" + strBegin + @"(?<title>[\s\S]+?)" + strEnd + "", RegexOptions.Compiled | RegexOptions.IgnoreCase);
        for (Match match1 = regex1.Match(htmlCode); match1.Success; match1 = match1.NextMatch())
        {
            NewsTitle = match1.Groups["title"].ToString();
        }
        return NewsTitle;
    }    public string RemoveHTML(string HtmlCode)
    {
        string MatchVale = HtmlCode;
        foreach (Match s in Regex.Matches(HtmlCode, "<.+?>"))
        {
            MatchVale = MatchVale.Replace(s.Value, "");
        }
        return MatchVale;
    }就采集以上这个网址,里面有图片的,我想把图片也显示出来,但被去除了,怎么办?
求各位哥哥帮小弟改一下方法吧~~

解决方案 »

  1.   

    /// <summary>
        /// 匹配页面的图片地址
        /// </summary>
        /// <param name="HtmlCode"></param>
        /// <param name="imgHttp">要补充的http://路径信息</param>
        /// <returns></returns>
        public string GetImgSrc(string HtmlCode, string imgHttp)
        {
            string MatchVale = "";
            string Reg = @"<img.+?>";
            foreach (Match m in Regex.Matches(HtmlCode, Reg))
            {
                MatchVale += GetImg((m.Value).ToLower().Trim(), imgHttp) + "||";
            }
            return MatchVale;
        }
        /// <summary>
        /// 匹配<img src="" />中的图片路径实际链接
        /// </summary>
        /// <param name="ImgString"><img src="" />字符串</param>
        /// <returns></returns>
        public string GetImg(string ImgString, string imgHttp)
        {
            string MatchVale = "";
            string Reg = @"src=.+\.(bmp|jpg|gif|png|)";
            foreach (Match m in Regex.Matches(ImgString.ToLower(), Reg))
            {
                MatchVale += (m.Value).ToLower().Trim().Replace("src=", "");
            }
            return (imgHttp + MatchVale);
        }
      

  2.   

    asp.net网页采集基类
      

  3.   

    我代码中
    实际图片地址
    http://www.chinaz.com/upimg/allimg/091021/1656210.jpg
    而采集到的是
    upimg/allimg/091021/1656210.jpg少了前面部分,请问怎么解决
      

  4.   

    public static ArrayList GetImageLinks(string htmlCode)
            {
                ArrayList al = new ArrayList();
                Match match = Regex.Match(htmlCode, @"http(s)?://+(((/?)+[\w-.]+(/))*)+[\w-./]+\.+(jpg|jpeg|png|bmp|gif)", RegexOptions.IgnoreCase);
                while (match.Success)
                {
                    if (!al.Contains(match.Value)) al.Add(match.Value);
                    match = match.NextMatch();
                }
                return al;
            }WebRequest request = WebRequest.Create("");
    WebResponse response = request.GetResponse();
    Stream reader = response.GetResponseStream();
    FileStream writer = new FileStream("D:\\a.gif", FileMode.OpenOrCreate, FileAccess.Write);
    byte[] buff = new byte[512];
    int c = 0; while ((c=reader.Read(buff, 0, buff.Length)) > 0)
    {
        writer.Write(buff, 0, c);
    }
    writer.Close();
      

  5.   

    http://www.chinaz.com/他的域名是固定的直接给加上去!在提取的时候!然后再根据http://www.chinaz.com/upimg/allimg/091021/1656210.jpg 保存图片!