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

C#使用HtmlAgilityPack實(shí)現(xiàn)解析提取HTML內(nèi)容

 更新時(shí)間:2023年12月03日 10:51:34   作者:rjcql  
HtmlAgilityPack是一個(gè)HTML解析類庫(kù),這篇文章主要為大家詳細(xì)介紹了C#如何使用HtmlAgilityPack實(shí)現(xiàn)解析提取HTML內(nèi)容,感興趣的小伙伴可以參考一下

寫在前面

HtmlAgilityPack是一個(gè)HTML解析類庫(kù),日常用法就是爬蟲獲取到內(nèi)容后,先用XPath獲取目標(biāo)節(jié)點(diǎn),再用正則進(jìn)行匹配;使用XPath的目的主要是將目標(biāo)節(jié)點(diǎn)或內(nèi)容限定在一個(gè)較小的范圍,如果一上來(lái)就用正則那效率肯定不行,因?yàn)檎齽t的規(guī)則設(shè)計(jì)耗時(shí)較長(zhǎng);而XPath直接可以用瀏覽器F12開發(fā)者工具窗口,鼠標(biāo)右鍵復(fù)制XPath獲得,非常方便。但在微觀內(nèi)容的操作上XPath就顯得太粗糙了,這時(shí)候就需要用正則來(lái)匹配,由于范圍已經(jīng)用XPath做過了篩選,所以此時(shí)的正則規(guī)則的設(shè)計(jì)要考慮的就很少了;兩者結(jié)合效率就大大提升了,解析HTML源碼實(shí)在是個(gè)耗時(shí)費(fèi)力的體力活。

老套路通過NuGet獲取類庫(kù)

代碼實(shí)現(xiàn)

    using HtmlAgilityPack;
 
    public static class HtmlDocumentMgr
    {
        #region Public Methods
 
        public static HtmlNodeCollection GetNodes(string xPath)
        {
            var body = BrowserController.GetFrameBody();
            var doc = GetHtmlDocument(body);
            return doc.DocumentNode.SelectNodes(xPath);
        }
 
        public static HtmlNode GetNode(string xPath)
        {
            var body = BrowserController.GetFrameBody();
            var doc = GetHtmlDocument(body);
            return doc.DocumentNode.SelectSingleNode(xPath);
        }
 
        public static HtmlDocument GetHtmlDocument(string html)
        {
            var doc = new HtmlDocument();
            doc.LoadHtml(html);
            return doc;
        }
 
 
        #endregion
 
    }

HTML 內(nèi)容可以是獨(dú)立爬蟲直接獲取的,也可以從內(nèi)嵌瀏覽器中獲得,本文采用內(nèi)嵌瀏覽器的方式,獲得HTML的代碼如下,僅做參考示意。

        public static string GetFrameBody()
        {
            var js = "document.querySelector('body').outerHTML";
            var evalRet = Browser.MainFrame.EvaluateScriptAsync(js);
            evalRet.Wait();
            if (evalRet.Result != null)
            {
                var ret = evalRet.Result.Result;
                return ret.ToNormalString();
            }
            return string.Empty;
        }

調(diào)用示例

        public static HtmlNode GetDescribeNode(string describe)
        {
            var body = BrowserController.GetFrameBody();
            var doc = new HtmlDocument();
            doc.LoadHtml(body);
 
            var match = string.Format(".//label[contains(text(), \"{0}\")]", describe);
            var labelNode = doc.DocumentNode.SelectSingleNode(match);
            if (labelNode == null && describe.Contains(" "))
            {
                describe = describe.Replace(" ", " ");
                match = string.Format(".//label[contains(text(), \"{0}\")]", describe);
                labelNode = doc.DocumentNode.SelectSingleNode(match);
            }
            return labelNode;
        }

到此這篇關(guān)于C#使用HtmlAgilityPack實(shí)現(xiàn)解析提取HTML內(nèi)容的文章就介紹到這了,更多相關(guān)C# HtmlAgilityPack解析HTML內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)日歷效果

    C#實(shí)現(xiàn)日歷效果

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C#實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線

    C#實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • 使用C#實(shí)現(xiàn)將CSV數(shù)據(jù)輕松轉(zhuǎn)換為PDF

    使用C#實(shí)現(xiàn)將CSV數(shù)據(jù)輕松轉(zhuǎn)換為PDF

    將 CSV 數(shù)據(jù)轉(zhuǎn)換為 PDF 格式在許多業(yè)務(wù)中是一個(gè)常見的需求,在這篇文章中,我們將探討如何使用 使用 C# 和 Spire.XLS for .NET 庫(kù)高效地將 CSV 文件轉(zhuǎn)換為 PDF,希望對(duì)大家有所幫助
    2025-11-11
  • C#通過域名獲得IP地址的方法

    C#通過域名獲得IP地址的方法

    這篇文章主要介紹了C#通過域名獲得IP地址的方法,涉及C#中GetHostByName方法的使用技巧,需要的朋友可以參考下
    2015-04-04
  • C#通過windows注冊(cè)表獲取軟件清單的方法

    C#通過windows注冊(cè)表獲取軟件清單的方法

    這篇文章主要介紹了C#通過windows注冊(cè)表獲取軟件清單的方法,涉及C#針對(duì)注冊(cè)表的訪問讀取與遍歷操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • c#中利用Tu Share獲取股票交易信息

    c#中利用Tu Share獲取股票交易信息

    這篇文章主要介紹了c#中利用Tu Share獲取股票交易信息,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Linq兩個(gè)List集合取交集的實(shí)現(xiàn)

    Linq兩個(gè)List集合取交集的實(shí)現(xiàn)

    這篇文章主要介紹了Linq兩個(gè)List集合取交集的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C#實(shí)現(xiàn)獲得某個(gè)枚舉的所有名稱

    C#實(shí)現(xiàn)獲得某個(gè)枚舉的所有名稱

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)獲得某個(gè)枚舉的所有名稱,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2025-01-01
  • C#用NPOI導(dǎo)出導(dǎo)入Excel幫助類

    C#用NPOI導(dǎo)出導(dǎo)入Excel幫助類

    這篇文章主要為大家詳細(xì)介紹了C#?NPOI導(dǎo)出導(dǎo)入Excel幫助類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 簡(jiǎn)單的觀察者模式示例分享

    簡(jiǎn)單的觀察者模式示例分享

    這篇文章主要介紹了簡(jiǎn)單的觀察者模式示例,抽象層定義了觀察者模式,實(shí)現(xiàn)層是對(duì)抽象層的具體實(shí)現(xiàn),需要的朋友可以參考下
    2014-03-03

最新評(píng)論

龙泉市| 广州市| 庆云县| 平舆县| 镇原县| 西昌市| 塘沽区| 原平市| 莎车县| 图片| 肇庆市| 英山县| 肇庆市| 顺昌县| 邳州市| 德钦县| 特克斯县| 抚顺县| 金华市| 文安县| 鹤岗市| 清镇市| 蒙城县| 沾化县| 兴宁市| 襄汾县| 林芝县| 仙桃市| 博兴县| 长汀县| 方正县| 海城市| 凌云县| 绍兴市| 庆城县| 渝北区| 武威市| 尼木县| 九江市| 香河县| 凌云县|