网学网为广大网友收集整理了,使用HtmlParser解析HTML ,希望对大家有所帮助!
如果要对HTML进行解析,提取HTML的数据或者修改HTML数据,HtmlParser是一个不错的选择.
使用HtmlParser可以解析本地和网络上的HTML数据:
Parser parser = new Parser( new Winista.Text.HtmlParser.Http.HttpProtocol(new Uri("uriString")));
Parser parser = new Parser( new Winista.Text.HtmlParser.Lex.Lexer( "HtmlString" ) );
System.IO.Stream stream = new System.IO.FileStream( "filePath" , System.IO.FileMode.Open );
Parser parser = new Parser( new Winista.Text.HtmlParser.Lex.Lexer( new Winista.Text.HtmlParser.Lex.Page( stream ,"charSet") ) );还可以分析某些特定节点的数据,使用 NodeClassFilter 指定要分析的节点类型:
NodeFilter filter = new NodeClassFilter( typeof( Winista.Text.HtmlParser.Tags.Div ) );使用Parser实例的Parse方法可以获得节点数组
NodeList nodeList = parser.Parse( null );
NodeList nodeList = parser.Parse( filter);现在分析一下的一段HTML:
<div class="divCss" id="div_1">
<div name="div" class="divCss" id="div_2">div_2</div>
<table name="table" id="table_1">
<tr>
<td>HtmlParser</td>
<td><div id="div_3"><font color="red">HtmlParser</font></div></td>
</tr>
</table>
</div>
txtResult是显示分析处理后的数据,txtSource是读取HTML数据的文本框
//记录个节点的起始位置,避免重复处理
IList<int> start = new List<int>( );
protected void Button1_Click ( object sender , EventArgs e )
{
this.txtResult.Text = string.Empty;
Lexer lexer = new Lexer( this.txtSource.Text );
Parser parser = new Parser( lexer );
NodeFilter filter = new NodeClassFilter( typeof( Winista.Text.HtmlParser.Tags.Div ) );
本新闻共5页,当前在第1页 1 2 3 4 5