欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

寫在前面

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

老套路通過NuGet獲取類庫

代碼實現(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)容可以是獨立爬蟲直接獲取的,也可以從內(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實現(xiàn)解析提取HTML內(nèi)容的文章就介紹到這了,更多相關(guān)C# HtmlAgilityPack解析HTML內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實現(xiàn)的文件操作封裝類完整實例【刪除,移動,復制,重命名】

    C#實現(xiàn)的文件操作封裝類完整實例【刪除,移動,復制,重命名】

    這篇文章主要介紹了C#實現(xiàn)的文件操作封裝類,結(jié)合完整實例形式分析了C#封裝文件的刪除,移動,復制,重命名等操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • ftp服務器搭建部署與C#實現(xiàn)ftp文件的上傳的示例

    ftp服務器搭建部署與C#實現(xiàn)ftp文件的上傳的示例

    本文主要介紹了ftp服務器搭建部署與C#實現(xiàn)ftp文件的上傳的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • C# 9.0 特性全面總結(jié)

    C# 9.0 特性全面總結(jié)

    這篇文章主要介紹了C# 9.0 特性的相關(guān)資料,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#?Sqlite數(shù)據(jù)庫的搭建及使用技巧

    C#?Sqlite數(shù)據(jù)庫的搭建及使用技巧

    這篇文章主要介紹了C#?Sqlite數(shù)據(jù)庫的搭建及使用技巧,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • C#實現(xiàn)圖形界面的時鐘

    C#實現(xiàn)圖形界面的時鐘

    這篇文章主要為大家詳細介紹了C#實現(xiàn)圖形界面的時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C#使用dynamic一行代碼實現(xiàn)反射操作

    C#使用dynamic一行代碼實現(xiàn)反射操作

    dynamic的出現(xiàn)讓C#具有了弱語言類型的特性。編譯器在編譯的時候不再對類型進行檢查,編譯時默認dynamic對象支持你想要的任何特性,這篇文章主要介紹了C#用dynamic一行代碼實現(xiàn)反射操作,需要的朋友可以參考下
    2023-04-04
  • c#預處理指令分析

    c#預處理指令分析

    這篇文章主要介紹了c#預處理指令的相關(guān)資料,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2020-08-08
  • c#實現(xiàn)萬年歷示例分享 萬年歷農(nóng)歷查詢

    c#實現(xiàn)萬年歷示例分享 萬年歷農(nóng)歷查詢

    這篇文章主要介紹了c#實現(xiàn)萬年歷的方法,可以顯示農(nóng)歷、節(jié)氣、節(jié)日、星座、星宿、屬相、生肖、閏年月、時辰,大家參考使用吧
    2014-01-01
  • vs2019安裝和使用詳細圖文教程

    vs2019安裝和使用詳細圖文教程

    這篇文章主要介紹了vs2019安裝和使用詳細圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C#實現(xiàn)實體類和XML相互轉(zhuǎn)換

    C#實現(xiàn)實體類和XML相互轉(zhuǎn)換

    這篇文章主要為大家詳細介紹了C#實現(xiàn)實體類和XML相互轉(zhuǎn)換的資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論