手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#抓取网页数据 解析标题描述图片等信息 去除HTML标签
C#抓取网页数据 解析标题描述图片等信息 去除HTML标签
摘要:一、首先将网页内容整个抓取下来,数据放在byte[]中(网络上传输时形式是byte),进一步转化为String,以便于对其操作,实例如下:复...

一、首先将网页内容整个抓取下来,数据放在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, "<title>([^<]*)</title>", RegexOptions.IgnoreCase | RegexOptions.Multiline);

title = TitleMatch.Groups[1].Value;

2.获取描述信息

复制代码 代码如下:

Match Desc = Regex.Match(strResponse, "<meta name="DESCRIPTION" content="([^<]*)">", RegexOptions.IgnoreCase | RegexOptions.Multiline);

strdesc = Desc.Groups[1].Value;

3.获取图片

复制代码 代码如下:

public class HtmlHelper

{

/// <summary>

/// HTML中提取图片地址

/// </summary>

public static List<string> PickupImgUrl(string html)

{

Regex regImg = new Regex(@"<imgb[^<>]*?bsrc[strn]*=[strn]*[""']?[strn]*(?<imgUrl>[^strn""'<>]*)[^<>]*?/", 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];

}

}

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();

【C#抓取网页数据 解析标题描述图片等信息 去除HTML标签】相关文章:

c#高效比对大量图片的实例代码

C# 遍历枚举类型的所有元素

C#数据结构与算法揭秘四 双向链表

C#实现任意数据类型转成json格式输出

C#中方括号[]的语法及作用介绍

c# 抓取Web网页数据分析

关于C#程序优化的五十种方法

C# SkinEngine控件 给窗体添加皮肤的方法

winform下实现win7 Aero磨砂效果实现代码

C# 一个WCF简单实例

精品推荐
分类导航