天天看點

HTML解析元件HtmlAgilityPack使用

HtmlAgilityPack是一個開源的解析HTML元素的類庫,最大的特點是可以通過XPath來解析HMTL,如果您以前用C#操作過XML,那麼使用起HtmlAgilityPack也會得心應手。目前最新版本為1.4.6,下載下傳位址如下:

http://htmlagilitypack.codeplex.com/

下面以一個簡單的例子來介紹下HtmlAgilityPack的使用,對于Asp.Net程式開發的網站要做模拟登入的時候,除了要知道使用者名文本框和密碼文本框的name屬性值外,還需要知道頁面的__VIEWSTATE、__EVENTVALIDATION這兩個隐藏控件的值,以及送出按鈕的name屬性,下面看看怎樣使用HtmlAgilityPack來獲得這個額外的值。

1、在項目中添加對HtmlAgilityPack.dll的引用

2、在Aspx頁面中放幾個文本框控件和一個按鈕控件

3、按鈕的背景事件如下

protected void btnHtml_Click(object sender, EventArgs e)
        {
            if (tbUrl.Text.Length > 0)
            {
                HtmlWeb htmlWeb = new HtmlWeb();
                HtmlDocument htmlDoc = htmlWeb.Load(this.tbUrl.Text);
                HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode("//input[@id='__VIEWSTATE']");
                string viewStateValue = htmlNode.Attributes["value"].Value;
                htmlNode = htmlDoc.DocumentNode.SelectSingleNode("//input[@id='__EVENTVALIDATION']");
                string eventValidation = htmlNode.Attributes["value"].Value;
                htmlNode = htmlDoc.DocumentNode.SelectSingleNode("//input[@type='submit']");
                string submitName = htmlNode.Attributes["name"].Value;

                tbViewState.Text = viewStateValue;
                tbEventValidation.Text = eventValidation;
                tbSubmitName.Text = submitName;
            }
        }      

4、以部落格園的登入界面為例,擷取後的界面如下

示例下載下傳

HTML解析元件HtmlAgilityPack使用

微信公衆号:不止dotNET

作者: oec2003

出處: http://oec2003.cnblogs.com/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結,否則 保留追究法律責任的權利。