我需要一些关于如何使用HTML Agility Pack从某些HTML中提取值的帮助。 (部分)HTML是:
<HTML>
<BODY bgcolor="FFFFFF" onLoad="window.document.forms[0].p_wwwparam.focus();">
<BR>
<DIV ALIGN="CENTER">
<CENTER><U><font color="800040"><H2>Password Reset Form</H2></font></U></CENTER>
<BR>
<TABLE >
<TH ALIGN="CENTER" COLSPAN="2"><FONT COLOR="800040">Verification details for
</FONT>WSCCD03</TH>
<TR>
<TD>EIN: </TD>
<TD>987654321</TD>
</TR>
<TR>
<TD>Full name: </TD>
<TD>Bob Bobbity</TD>
</TR>
</TABLE>
...... Rest of document
我需要从包含'EIN:'的td之后的td中提取值,所以在这种情况下我需要提取'987654321'
非常感谢任何帮助。
答案 0 :(得分:2)
这应该有效
var text = doc.DocumentNode.SelectSingleNode("//td[text()='EIN: ']/../td[2]")
.InnerText;
答案 1 :(得分:0)
您可以执行以下操作:
HtmlDocument doc = new HtmlWeb().Load("http://www.yoursite.com/yourpage.html");
HtmlNodeCollection trs = doc.DocumentNode.SelectNodes(".//tr");
HtmlNodeCollection tds = trs[0].SelectNodes(".//td");
var text = tds[1].InnerText;
答案 2 :(得分:0)
这是一个简单的代码,可以让你获得第二个td值:
var htmlDoc = new HtmlDocument();
// Point to your HTML doc content here... :)
htmlDoc.Load(@"C:\Libs\HtmlAgilityPack.1.4.0\htmldocument.html");
var node = htmlDoc.DocumentNode.SelectNodes("//td").Skip(1).Take(1).Single();
System.Console.WriteLine(node.InnerText);