国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#抓取網頁數據 解析標題描述圖片等信息 去除HTML標簽

2019-10-29 21:29:34
字體:
來源:轉載
供稿:網友
本文主要一步一步介紹利用C#抓取頁面數據的過程,抓取HTML,獲取標題、描述、圖片等信息,并去除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;
}

 

有些例外會使得去除不干凈,所以建議連續(xù)兩次轉化。這樣將Html標簽轉化為了空格。太多連續(xù)的空格會影響之后對字符串的操作。所以再加入這樣的語句:

 

復制代碼代碼如下:

//把所有空格變?yōu)橐粋€空格
Regex r = new Regex(@"/s+");
wordsOnly = r.Replace(strResponse, " ");
wordsOnly.Trim();


注:相關教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 巫溪县| 诸城市| 崇信县| 武山县| 临安市| 乐山市| 绥滨县| 定远县| 名山县| 布尔津县| 瑞丽市| 泽库县| 高陵县| 徐水县| 桐柏县| 罗源县| 高邑县| 奉节县| 油尖旺区| 白玉县| 朝阳市| 始兴县| 新河县| 苏尼特右旗| 铜山县| 南康市| 通城县| 从化市| 甘孜县| 武宣县| 德庆县| 汝南县| 嵊州市| 文安县| 札达县| 连云港市| 那曲县| 天水市| 临夏市| 顺平县| 石渠县|