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#实现猜数字游戏具体代码,供大家参考,具体内容如下给定一个0-100的随机数字猜其大小题目样式:电脑产生一个0到100之间的随机数字,并且...
[阅读全文]
-
-
C# 可空类型的具体使用
在项目中我们经常会遇到可为空类型,那么到底什么是可为空类型呢?下面我们将从4个方面为大家剖析。1、可空类型基础知识顾名思义,可空类型指的就是某个对象类型可以为空...
[阅读全文]
-
-
-
C#实现猜数字小游戏
本文实例为大家分享了c#实现猜数字小游戏的具体代码,供大家参考,具体内容如下效果如图:代码:using system;using system.collecti...
[阅读全文]
-
-
C#实现简单俄罗斯方块
最近在看《.net游戏编程入门经典 c#篇》 第一章介绍了如何制作俄罗斯方块,自己试了试按照书上的步骤,可算是完成了。于是写下这篇文章留作纪念。1.类的设计在充...
[阅读全文]
-
网友评论