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

一、首先将网页内容整个抓取下来,数据放在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();

时间: 2024-09-14 13:21:17

C#抓取网页数据 解析标题描述图片等信息 去除HTML标签_C#教程的相关文章

javascript-如何利用js或者jQuery抓取网页数据

问题描述 如何利用js或者jQuery抓取网页数据 有什么高效的方法吗,或者怎么实现,主要问题在于,怎么获取frame里的元素 解决方案 这个是服务器端弄的,客户端js受限于浏览器安全,无法直接获取跨域数据. 一定js可以用雅虎的yql将远程html下载转为jsonp数据,或者自己服务器做代理页面 解决方案二: bobo说的很对,要高效,建议你在服务器上抓取,或者干脆用io.js一类的将js作为本地应用的运行时.

c++builder-C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者。。多谢了

问题描述 C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者..多谢了 C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者..工作中用到了,各位大牛,兄弟很急,在这里先多谢了!! 解决方案 用idhttp控件很方便的

抓取数据-用jsoup抓取网页数据的时候,在本地开发环境上面没有问题,但是把他部署到阿里云上面就不行

问题描述 用jsoup抓取网页数据的时候,在本地开发环境上面没有问题,但是把他部署到阿里云上面就不行 用jsoup抓取网页数据的时候,在本地开发环境上面没有问题, 但是把他部署到阿里云上面去的时候,就连接超时.但奇怪的是,我对4,5个网址进行抓取, 就一个网址连接超时,高手帮忙解决下 解决方案 有没有人在 有没有人在 有没有人在

c语言抓取网页数据的问题

问题描述 c语言抓取网页数据的问题 现有一固定网址,我需要从该网址上获取数据并拆分.希望大神能帮我实现,本人并无此类经验,请务必写出完整代码,多谢多谢 解决方案 (C语言)ACM中的数据处理问题!C语言数据转换问题C语言一维数据中2[arry]问题 解决方案二: (C语言)ACM中的数据处理问题! C语言数据转换问题 C语言一维数据中2[arry]问题 解决方案三: http://blog.chinaunix.net/uid-9950859-id-98922.htmlhttp://bbs.csd

java抓取网页数据数据问题

问题描述 java抓取网页数据数据问题 !红线的位置有错误图片说明 解决方案 写的没见过--给你我常写的把. HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); HttpGet httpGet = new HttpGet(url); 解决方案二: org.apache.http.i

PHP抓取网页、解析HTML常用的方法总结

  这篇文章主要介绍了PHP抓取网页.解析HTML常用的方法总结,本文只是对可以实现这两个需求的方法作了总结,只介绍方法,不介绍如何实现,需要的朋友可以参考下 概述 爬虫是我们在做程序时经常会遇到的一种功能.PHP有许多开源的爬虫工具,如snoopy,这些开源的爬虫工具,通常能帮我们完成大部分功能,但是在某种情况下,我们需要自己实现一个爬虫,本篇文章对PHP实现爬虫的方式做个总结. PHP实现爬虫主要方法 1.file()函数 2.file_get_contents()函数 3.fopen()-

使用HtmlAgilityPack批量抓取网页数据

原文:使用HtmlAgilityPack批量抓取网页数据 相关软件点击下载 登录的处理.因为有些网页数据需要登陆后才能提取.这里要使用ieHTTPHeaders来提取登录时的提交信息. 抓取网页  HtmlAgilityPack.HtmlDocument htmlDoc;            if (!string.IsNullOrEmpty(登录URL))            {                htmlDoc = htmlWeb.Load(登录URL, 提交的用户验证信息,

求助! 使用java抓取网页数据

问题描述 我想要抓取这个https://www.bicing.cat/es/formmap网上的有关自行车的信息改怎么样抓取??求指教! 解决方案 解决方案二:请求这个网址,然后把获取到的InputStream读出来,看看有没有你要的数据.newInputStreamReader(((HttpURLConnection)(newURL("https://www.bicing.cat/es/formmap")).openConnection()).getInputStream()); 解

HttpWebRequest 抓取网页数据问题!!!

问题描述 各位高手:我使用HttpWebRequest类来抓取http://kr.mouser.com网页的数据,我选择的是韩语的页面,可是抓下来的数据是中文的,哪位高手给个解决方案.万分感激!附上代码HttpWebRequestwebRequest=(HttpWebRequest)WebRequest.Create("http://kr.mouser.com");webRequest.Method="GET";webRequest.Headers.Set(&quo