【发布时间】:2014-03-27 13:15:17
【问题描述】:
我正在尝试使用 Fizzler 在 C# 中解析网站。我的目标是获得这个元素: /html/body/form/div[3]/div/div/div/div/div/table/tbody/tr[18]/td[2]/span (FireBug XPath)。
问题在于 TR 和 TD 编号不固定。据我所知,我总是需要 LAST 跨度,在 LAST TD 中,在 LAST TR 中 :)
我正在尝试这个,但我得到的只是 NULL:
HtmlWeb document = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = document.Load("http://websiteaddress.com/site-name.html");
HtmlNodeCollection tableDatas = doc.DocumentNode.SelectNodes("//table/tbody/tr/td/span").Last();
这是我要解析的 TABLE。我只需要最后一行最后一个 td 中最后一个 span 的内容。
<table id="ctl00_WebPartManager1_blablabla_ctl00_tblRates" cellspacing="5" cellpadding="5" rules="all" border="1" style="width:100%;">
<tr>
<th></th><th><span>USD</span></th>
</tr><tr>
<th></th><th><span>USA $</span></th>
</tr><tr>
<th></th><th><span>1</span></th>
</tr><tr>
<td><span>2014. 03. 03.</span></td><td><span>227,31 </span></td>
</tr><tr>
<td><span>2014. 03. 04.</span></td><td><span>226,79 </span></td>
</tr><tr>
<td><span>2014. 03. 05.</span></td><td><span>225,66 </span></td>
</tr><tr>
<td><span>2014. 03. 06.</span></td><td><span>225,03 </span></td>
</tr><tr>
<td><span>2014. 03. 07.</span></td><td><span>223,14 </span></td>
</tr><tr>
<td><span>2014. 03. 10.</span></td><td><span>224,63 </span></td>
</tr><tr>
<td><span>2014. 03. 11.</span></td><td><span>226,06 </span></td>
</tr><tr>
<td><span>2014. 03. 12.</span></td><td><span>226,53 </span></td>
</tr><tr>
<td><span>2014. 03. 13.</span></td><td><span>223,63 </span></td>
</tr><tr>
<td><span>2014. 03. 14.</span></td><td><span>225,74 </span></td>
</tr><tr>
<td><span>2014. 03. 17.</span></td><td><span>224,67 </span></td>
</tr><tr>
<td><span>2014. 03. 18.</span></td><td><span>224,65 </span></td>
</tr><tr>
<td><span>2014. 03. 19.</span></td><td><span>223,26 </span></td>
</tr><tr>
<td><span>2014. 03. 20.</span></td><td><span>225,94 </span></td>
</tr><tr>
<td><span>2014. 03. 21.</span></td><td><span>226,25 </span></td>
</tr>
</table>
这是我从 document.load() 方法得到的结果(有点乱...):
<table id="ctl00_WebPartManager1_blablabla_ctl00_tblRates" cellspacing="5" cellpadding="5" rules="all" border="1" style="width:100%;">
<tr>
<th><th><span>USD</span>
<tr>
<th><th><span>USA $</span>
<tr>
<th><th><span>1</span>
<tr>
<td><span>2014. 03. 03.</span><td><span>227,31 </span>
<tr>
<td><span>2014. 03. 04.</span><td><span>226,79 </span>
<tr>
<td><span>2014. 03. 05.</span><td><span>225,66 </span>
<tr>
<td><span>2014. 03. 06.</span><td><span>225,03 </span>
<tr>
<td><span>2014. 03. 07.</span><td><span>223,14 </span>
<tr>
<td><span>2014. 03. 10.</span><td><span>224,63 </span>
<tr>
<td><span>2014. 03. 11.</span><td><span>226,06 </span>
<tr>
<td><span>2014. 03. 12.</span><td><span>226,53 </span>
<tr>
<td><span>2014. 03. 13.</span><td><span>223,63 </span>
<tr>
<td><span>2014. 03. 14.</span><td><span>225,74 </span>
<tr>
<td><span>2014. 03. 17.</span><td><span>224,67 </span>
<tr>
<td><span>2014. 03. 18.</span><td><span>224,65 </span>
<tr>
<td><span>2014. 03. 19.</span><td><span>223,26 </span>
<tr>
<td><span>2014. 03. 20.</span><td><span>225,94 </span>
<tr>
<td><span>2014. 03. 21.</span><td><span>226,25 </span>
</td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></td></td></tr></th></th></tr></th></th></tr></th></th></tr></table>
有人可以帮帮我吗?
非常感谢!
【问题讨论】:
-
这是您问题的一部分吗? stackoverflow.com/questions/18241029/…
-
好吧,看看你提供的输入:是的,是的。
标签: c# xpath html-agility-pack fizzler