HTML解析組件HtmlAgilityPack使用

HtmlAgilityPack是一個開源的解析HTML元素的類庫,最大的特色是能夠經過XPath來解析HMTL,若是您之前用C#操做過XML,那麼使用起HtmlAgilityPack也會駕輕就熟。目前最新版本爲1.4.6,下載地址以下:html

http://htmlagilitypack.codeplex.com/網站

下面以一個簡單的例子來介紹下HtmlAgilityPack的使用,對於Asp.Net程序開發的網站要作模擬登陸的時候,除了要知道用戶名文本框和密碼文本框的name屬性值外,還須要知道頁面的__VIEWSTATE、__EVENTVALIDATION這兩個隱藏控件的值,以及提交按鈕的name屬性,下面看看怎樣使用HtmlAgilityPack來得到這個額外的值。this

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

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

三、按鈕的後臺事件以下htm

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;
            }
        }

四、以博客園的登陸界面爲例,獲取後的界面以下blog

示例下載事件

相關文章
相關標籤/搜索