最新国产好看的视频,伊人天堂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ù)的過程,抓取HTML,獲取標(biāo)題、描述、圖片等信息,并去除HTML,希望對(duì)大家有所幫助。

一、首先將網(wǎng)頁(yè)內(nèi)容整個(gè)抓取下來,數(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#開發(fā)瀏覽器擴(kuò)展的全過程記錄

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

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

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

    BackgroundWorker類允許在單獨(dú)的專用線程上運(yùn)行操作。如果需要能進(jìn)行響應(yīng)的用戶界面,而且面臨與這類操作相關(guān)的長(zhǎng)時(shí)間延遲,則可以使用BackgroundWorker類方便地解決問題,下面看示例
    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è)置屬性的類,這篇文章主要介紹了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ì)的示例代碼,有需要的朋友可以參考借鑒,下面來一起看看吧。
    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),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Unity實(shí)現(xiàn)植物識(shí)別示例詳解

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

    這篇文章主要介紹了如何通過Unity接入百度AI實(shí)現(xiàn)植物識(shí)別,接口返回植物的名稱,并支持獲取識(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ì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評(píng)論

隆尧县| 兴国县| 云龙县| 杭州市| 新民市| 洛隆县| 昌吉市| 镇远县| 东山县| 阿拉善右旗| 奉新县| 盘锦市| 边坝县| 正定县| 鄱阳县| 沁源县| 上高县| 道孚县| 赞皇县| 陈巴尔虎旗| 尖扎县| 岱山县| 长沙市| 宣武区| 孝义市| 汝州市| 巴东县| 仁寿县| 沅江市| 平邑县| 连城县| 徐州市| 嘉定区| 涞源县| 呼伦贝尔市| 普洱| 北辰区| 江达县| 搜索| 拜城县| 太仓市|