最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#抓取網(wǎng)頁(yè)數(shù)據(jù) 解析標(biāo)題描述圖片等信息 去除HTML標(biāo)簽

 更新時(shí)間:2016年04月19日 11:17:28   作者:seeyou  
本文主要一步一步介紹利用C#抓取頁(yè)面數(shù)據(jù)的過(guò)程,抓取HTML,獲取標(biāo)題、描述、圖片等信息,并去除HTML,希望對(duì)大家有所幫助。

一、首先將網(wǎng)頁(yè)內(nèi)容整個(gè)抓取下來(lái),數(shù)據(jù)放在byte[]中(網(wǎng)絡(luò)上傳輸時(shí)形式是byte),進(jìn)一步轉(zhuǎn)化為String,以便于對(duì)其操作,實(shí)例如下:

復(fù)制代碼 代碼如下:

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
}

二、得到了數(shù)據(jù)的字符串形式,然后可以對(duì)網(wǎng)頁(yè)進(jìn)行解析了(其實(shí)就是對(duì)字符串的各種操作和正則表達(dá)式的應(yīng)用):

常用的的解析還有以下幾種:

1.獲取標(biāo)題

復(fù)制代碼 代碼如下:

Match TitleMatch = Regex.Match(strResponse, "<title>([^<]*)</title>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
title = TitleMatch.Groups[1].Value;

2.獲取描述信息

復(fù)制代碼 代碼如下:

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

3.獲取圖片

復(fù)制代碼 代碼如下:

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標(biāo)簽

復(fù)制代碼 代碼如下:

private string StripHtml(string strHtml)
{
    Regex objRegExp = new Regex("<(.|\n)+?>");
    string strOutput = objRegExp.Replace(strHtml, "");
    strOutput = strOutput.Replace("<", "&lt;");
    strOutput = strOutput.Replace(">", "&gt;");
    return strOutput;
}

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

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • Unity實(shí)現(xiàn)跑馬燈效果的示例代碼

    Unity實(shí)現(xiàn)跑馬燈效果的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Unity實(shí)現(xiàn)跑馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 利用C#開(kāi)發(fā)瀏覽器擴(kuò)展的全過(guò)程記錄

    利用C#開(kāi)發(fā)瀏覽器擴(kuò)展的全過(guò)程記錄

    做web開(kāi)發(fā)的同學(xué),經(jīng)常會(huì)用到各種chrome瀏覽器插件,那么我們寄幾怎么開(kāi)發(fā)一個(gè)插件呢(其實(shí)是瀏覽器擴(kuò)展)?這篇文章主要給大家介紹了關(guān)于利用C#開(kāi)發(fā)瀏覽器擴(kuò)展的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • C#在后臺(tái)運(yùn)行操作(BackgroundWorker用法)示例分享

    C#在后臺(tái)運(yùn)行操作(BackgroundWorker用法)示例分享

    BackgroundWorker類(lèi)允許在單獨(dú)的專(zhuān)用線(xiàn)程上運(yùn)行操作。如果需要能進(jìn)行響應(yīng)的用戶(hù)界面,而且面臨與這類(lèi)操作相關(guān)的長(zhǎng)時(shí)間延遲,則可以使用BackgroundWorker類(lèi)方便地解決問(wèn)題,下面看示例
    2013-12-12
  • C# winform點(diǎn)擊生成二維碼實(shí)例代碼

    C# winform點(diǎn)擊生成二維碼實(shí)例代碼

    這篇文章主要介紹了 C# winform點(diǎn)擊生成二維碼實(shí)例代碼,需要的朋友可以參考下
    2017-04-04
  • C#中屬性PropertyInfo使用示例小結(jié)

    C#中屬性PropertyInfo使用示例小結(jié)

    在C#中,PropertyInfo是一個(gè)用于獲取和設(shè)置屬性的類(lèi),這篇文章主要介紹了C#中屬性PropertyInfo怎么使用,需要的朋友可以參考下
    2024-06-06
  • C#將HashTable中鍵列表或值列表復(fù)制到一維數(shù)組的方法

    C#將HashTable中鍵列表或值列表復(fù)制到一維數(shù)組的方法

    這篇文章主要介紹了C#將HashTable中鍵列表或值列表復(fù)制到一維數(shù)組中方法,涉及C#操作HashTable的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#向Word文檔中添加內(nèi)容控件的方法示例

    C#向Word文檔中添加內(nèi)容控件的方法示例

    這篇文章主要給大家介紹了C#向Word文檔中添加內(nèi)容控件的方法,文中對(duì)各種不同控件的添加方法分別進(jìn)行了介紹,如組合框、文本、圖片、日期選取器及下拉列表等內(nèi)容控件,都給出了詳細(xì)的示例代碼,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • C# 系統(tǒng)全局的異常處理實(shí)現(xiàn)

    C# 系統(tǒng)全局的異常處理實(shí)現(xiàn)

    在C#應(yīng)用程序中,異??赡茉谌魏蔚胤桨l(fā)生,本文主要介紹了C# 系統(tǒng)全局的異常處理實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Unity實(shí)現(xiàn)植物識(shí)別示例詳解

    Unity實(shí)現(xiàn)植物識(shí)別示例詳解

    這篇文章主要介紹了如何通過(guò)Unity接入百度AI實(shí)現(xiàn)植物識(shí)別,接口返回植物的名稱(chēng),并支持獲取識(shí)別結(jié)果對(duì)應(yīng)的百科信息。感興趣的可以了解一下
    2022-01-01
  • C# out關(guān)鍵詞的應(yīng)用實(shí)例

    C# out關(guān)鍵詞的應(yīng)用實(shí)例

    下面小編就為大家分享一篇C# out關(guān)鍵詞的應(yīng)用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12

最新評(píng)論

于田县| 西平县| 宜良县| 扶沟县| 江山市| 精河县| 都江堰市| 水城县| 大方县| 会泽县| 沾化县| 凤翔县| 商城县| 女性| 延吉市| 罗田县| 元氏县| 和林格尔县| 肇庆市| 留坝县| 闽清县| 布拖县| 辛集市| 千阳县| 宜宾市| 东光县| 新宾| 德惠市| 仙桃市| 葫芦岛市| 西峡县| 扎囊县| 广丰县| 利津县| 车致| 乐清市| 咸宁市| 清河县| 陕西省| 铜梁县| 广平县|