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, "<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(@"<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];
}
}
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#教程
本文标题:C#抓取网页数据 解析标题描述图片等信息 去除HTML标签
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/6562.html
您可能感兴趣的文章
- 01-10关于ASP网页无法打开的解决方案
- 01-10C#实现Winform中打开网页页面的方法
- 01-10Extjs4如何处理后台json数据中日期和时间
- 01-10C#异步绑定数据实现方法
- 01-10C#动态创建Access数据库及密码的方法
- 01-10C#使用ADO.Net部件来访问Access数据库的方法
- 01-10C#获取网页源代码的方法
- 01-10C#实现ComboBox控件显示出多个数据源属性的方法
- 01-10C#将图片存放到SQL SERVER数据库中的方法
- 01-10C#.NET实现网页自动登录的方法
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 01-11ajax实现页面的局部加载
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10delphi制作wav文件的方法
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 04-02jquery与jsp,用jquery
- 01-10SublimeText编译C开发环境设置
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10C#中split用法实例总结