栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#抓取网页数据 解析标题描述图片等信息 去除HTML标签

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#抓取网页数据 解析标题描述图片等信息 去除HTML标签

一、首先将网页内容整个抓取下来,数据放在byte[]中(网络上传输时形式是byte),进一步转化为String,以便于对其操作,实例如下:

复制代码 代码如下:
private static string GetPageData(string url)
{
    if (url == null || url.Trim() == "")
        return null;
    WebClient wc = new WebClient();
    wc.Credentials = CredentialCache.DefaultCredentials;
    Byte[] pageData = wc.DownloadData(url);
    return Encoding.Default.GetString(pageData);//.ASCII.GetString
}

二、得到了数据的字符串形式,然后可以对网页进行解析了(其实就是对字符串的各种操作和正则表达式的应用):

常用的的解析还有以下几种:

1.获取标题

复制代码 代码如下:
Match TitleMatch = Regex.Match(strResponse, "([^<]*)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
title = TitleMatch.Groups[1].Value;

2.获取描述信息

复制代码 代码如下:
Match Desc = Regex.Match(strResponse, "", RegexOptions.IgnoreCase | RegexOptions.Multiline);
strdesc = Desc.Groups[1].Value;

3.获取图片

复制代码 代码如下:
public class HtmlHelper
{
    ///


    /// HTML中提取图片地址
    ///

    public static List PickupImgUrl(string html)
    {
        Regex regImg = new Regex(@"]*?bsrc[strn]*=[strn]*[""']?[strn]*(?[^strn""'<>]*)[^<>]*?/?[strn]*>", RegexOptions.IgnoreCase);
        MatchCollection matches = regImg.Matches(html);
        List lstImg = new List();
        foreach (Match match in matches)
        {
            lstImg.Add(match.Groups["imgUrl"].Value);
        }
        return lstImg;
    }
    ///
    /// HTML中提取图片地址
    ///

    public static string PickupImgUrlFirst(string html)
    {
        List lstImg = PickupImgUrl(html);
        return lstImg.Count == 0 ? string.Empty : lstImg[0];
    }
}

4.去除Html标签

复制代码 代码如下:
private string StripHtml(string strHtml)
{
    Regex objRegExp = new Regex("<(.|n)+?>");
    string strOutput = objRegExp.Replace(strHtml, "");
    strOutput = strOutput.Replace("<", "<");
    strOutput = strOutput.Replace(">", ">");
    return strOutput;
}

有些例外会使得去除不干净,所以建议连续两次转化。这样将Html标签转化为了空格。太多连续的空格会影响之后对字符串的操作。所以再加入这样的语句:

复制代码 代码如下:
//把所有空格变为一个空格
Regex r = new Regex(@"s+");
wordsonly = r.Replace(strResponse, " ");
wordsOnly.Trim();

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/124304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号