<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HtmlAgilityPack on 冯威的博客</title><link>https://fwhyy.com/tags/htmlagilitypack/</link><description>Recent content in HtmlAgilityPack on 冯威的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sun, 15 Sep 2013 00:00:00 +0800</lastBuildDate><atom:link href="https://fwhyy.com/tags/htmlagilitypack/atom.xml" rel="self" type="application/rss+xml"/><item><title>HTML解析组件HtmlAgilityPack使用</title><link>https://fwhyy.com/2013/09/using-htmlagilitypack/</link><pubDate>Sun, 15 Sep 2013 00:00:00 +0800</pubDate><guid>https://fwhyy.com/2013/09/using-htmlagilitypack/</guid><description>&lt;p&gt;HtmlAgilityPack是一个开源的解析HTML元素的类库，最大的特点是可以通过XPath来解析HMTL，如果您以前用C#操作过XML，那么使用起HtmlAgilityPack也会得心应手。目前最新版本为1.4.6,下载地址如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://htmlagilitypack.codeplex.com/"&gt;http://htmlagilitypack.codeplex.com/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="使用介绍"&gt;使用介绍&lt;/h2&gt;
&lt;p&gt;下面以一个简单的例子来介绍下HtmlAgilityPack的使用，对于Asp.Net程序开发的网站要做模拟登录的时候，除了要知道用户名文本框和密码文本框的name属性值外，还需要知道页面的__VIEWSTATE、__EVENTVALIDATION这两个隐藏控件的值，以及提交按钮的name属性，下面看看怎样使用HtmlAgilityPack来获得这个额外的值。&lt;/p&gt;
&lt;p&gt;1、在项目中添加对HtmlAgilityPack.dll的引用&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201290704832.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;2、在Aspx页面中放几个文本框控件和一个按钮控件&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201290704038.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;3、按钮的后台事件如下&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;protected void btnHtml_Click(object sender, EventArgs e)
{
 if (tbUrl.Text.Length &amp;gt; 0)
 {
 HtmlWeb htmlWeb = new HtmlWeb();
 HtmlDocument htmlDoc = htmlWeb.Load(this.tbUrl.Text);
 HtmlNode htmlNode = htmlDoc.DocumentNode.SelectSingleNode(&amp;#34;//input[@id=&amp;#39;__VIEWSTATE&amp;#39;]&amp;#34;);
 string viewStateValue = htmlNode.Attributes[&amp;#34;value&amp;#34;].Value;
 htmlNode = htmlDoc.DocumentNode.SelectSingleNode(&amp;#34;//input[@id=&amp;#39;__EVENTVALIDATION&amp;#39;]&amp;#34;);
 string eventValidation = htmlNode.Attributes[&amp;#34;value&amp;#34;].Value;
 htmlNode = htmlDoc.DocumentNode.SelectSingleNode(&amp;#34;//input[@type=&amp;#39;submit&amp;#39;]&amp;#34;);
 string submitName = htmlNode.Attributes[&amp;#34;name&amp;#34;].Value;

 tbViewState.Text = viewStateValue;
 tbEventValidation.Text = eventValidation;
 tbSubmitName.Text = submitName;
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;4、以博客园的登录界面为例，获取后的界面如下&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201290705365.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pan.baidu.com/share/link?shareid=71500880&amp;amp;uk=2902808695"&gt;示例下载&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>