我试图绕过制作我的第一个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传递 非常感谢任何帮助。
答案 0 :(得分:4)
Firefox将tbody标记添加到表格中(在原始html中,此标记可能不存在)。所以,我建议不要写所有路径,找到最具特色的路径并使用//。 例如,// div [@ class ='data'] / table // tr / td
答案 1 :(得分:3)
您是否注意到您有@align="centre"
但HTML已align="center"
(如英国与美国拼写一样)?