源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-04-30 10:47 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#抓取网页数据 解析标题描述图片等信息 去除HTML标签
[b]一、首先将网页内容整个抓取下来,数据放在byte[]中(网络上传输时形式是byte),进一步转化为String,以便于对其操作,实例如下:[/b]
[u]复制代码[/u] 代码如下:
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 }
[b]二、得到了数据的字符串形式,然后可以对网页进行解析了(其实就是对字符串的各种操作和正则表达式的应用):[/b] 常用的的解析还有以下几种: [b]1.获取标题[/b]
[u]复制代码[/u] 代码如下:
Match TitleMatch = Regex.Match(strResponse, "<title>([^<]*)</title>", RegexOptions.IgnoreCase | RegexOptions.Multiline); title = TitleMatch.Groups[1].Value;
[b]2.获取描述信息[/b]
[u]复制代码[/u] 代码如下:
Match Desc = Regex.Match(strResponse, "<meta name=\"DESCRIPTION\" content=\"([^<]*)\">", RegexOptions.IgnoreCase | RegexOptions.Multiline); strdesc = Desc.Groups[1].Value;
[b]3.获取图片[/b]
[u]复制代码[/u] 代码如下:
public class HtmlHelper {     /// <summary>     /// HTML中提取图片地址     /// </summary>     public static List<string> PickupImgUrl(string html)     {         Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);         MatchCollection matches = regImg.Matches(html);         List<string> lstImg = new List<string>();         foreach (Match match in matches)         {             lstImg.Add(match.Groups["imgUrl"].Value);         }         return lstImg;     }     /// <summary>     /// HTML中提取图片地址     /// </summary>     public static string PickupImgUrlFirst(string html)     {         List<string> lstImg = PickupImgUrl(html);         return lstImg.Count == 0 ? string.Empty : lstImg[0];     } }
[b]4.去除Html标签[/b]
[u]复制代码[/u] 代码如下:
private string StripHtml(string strHtml) {     Regex objRegExp = new Regex("<(.|\n)+?>");     string strOutput = objRegExp.Replace(strHtml, "");     strOutput = strOutput.Replace("<", "<");     strOutput = strOutput.Replace(">", ">");     return strOutput; }
有些例外会使得去除不干净,所以建议连续两次转化。这样将Html标签转化为了空格。太多连续的空格会影响之后对字符串的操作。所以再加入这样的语句:
[u]复制代码[/u] 代码如下:
//把所有空格变为一个空格 Regex r = new Regex(@"\s+"); wordsOnly = r.Replace(strResponse, " "); wordsOnly.Trim();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部