我正在努力制作我的第一个 C# 应用程序(它可以做的不仅仅是说“Hello world”),
现在 html 文件有很多标签,(但只有下面给出的两个 h4 标签。) 但这是我感兴趣的部分:
<table width="100%" height="400" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#111111" background="images/page_bg.gif" style="BORDER-COLLAPSE: collapse">
<tbody valign="top">
<tr>
<td>
<table width="80%" border="0" valign=top background="images/page_bg.gif">
<tr>
<td>
<div align="center">
<h4 align="center">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<b>
<font size="4" face="Arial, Helvetica, sans-serif">
UNWANTED TEXT
</font></b></font></h4>
<p><br />
Name : {NAME HERE} <br>Number : {NUMBERS HERE}<br>Number2 : {NUMBERS2}<br><br><h4>UNWANTED TEXT</h4><br>detail NO. : <span class=style7>{NUmbers3}</span><br><br><a href=http://test.xom>UNWANTED TEXT</a><br><br>
</p>
<p class="content"><em><strong>
<p> </p>
我希望得到 NAME,Numbers1,Numbers2,Numbers3,所以,我想我必须做这样的事情 =
//div[@align = "centre"]/h4/followingsibling::Text();
但它肯定是不完整的,关于我应该怎么做的任何想法,我从 firebug 得到了 Xpath:
/html/body/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[2]/td/div/table/tbody/tr/td/table/tbody/tr/td/div/h4
我也尝试过(先获取原始数据然后进一步修剪)
HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//table[@height='400']//div[@align='centre']"//p);
foreach(HtmlNode node1 in node)
textBox1.Text += node1.InnerText;
但是这里的Node传为NULL 非常感谢任何帮助。
最佳答案
Firefox 将 tbody 标签添加到表格中(在原始 html 中,此标签可以不存在)。所以,我建议不要写所有路径,找到最有特色的路径并使用//。 例如//div[@class='data']/table//tr/td
关于c# - 无法找出 HtmlAgilityPack 中的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6185709/