我想用HTML敏捷包解析这个HTML页面,但我似乎无法让它按预期工作。HTML敏捷包不像预期的那样运行
这是我的网页(缩短):该表
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de-ch" xml:lang="de-ch">
<head>
</head>
<body id="Adressservices">
<div id="page">
<div id="page-544">
<table class="full">
<thead>
<tr>
<th class="first" scope="col" style="width: 18%;">Type</th>
<th class="col" style="width: 20%;">Name</th>
<th class="col">Date</th>
<th class="col" style="text-align: right; width: 10%;">Size</th>
</tr>
</thead>
<tbody>
<tr>
<td class="first">Change</td>
<td><a href="/download?file=5210044">somefile01.zip</a></td>
<td style="width: 5%;"><b class="filesize">2012-03-01</b></td>
<td style="text-align: right;"><b class="filesize">881.00</b></td>
</tr>
<tr>
<td class="first">Change</td>
<td><a href="/download?file=7610042">somefile02.zip</a></td>
<td style="width: 5%;"><b class="filesize">2012-02-01</b></td>
<td style="text-align: right;"><b class="filesize">1400.00</b></td>
</tr>
<tr>.....</tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
真正的页面有不少更<tr>....</tr>
行。
我能下载页面只是使用HTML敏捷性包此代码段罚款:
HtmlWeb web = new HtmlWeb();
HtmlDocument archiveDoc = web.Load(_archiveUrl);
var tables = archiveDoc.DocumentNode.SelectNodes("//table");
所以我得到一个处理我的<table>
元素上,工作得很好。
现在,我试图从该表中得到第一<tr>
元素,我想这一点:
HtmlNode node = tables[0];
var allTRNodes = node.SelectNodes("tbody/tr");
var firstTR = allTRNodes[0];
在这里,我没有收到<tr>
节点如预期的N - 但只有两个。和第一那些不包含类型<td>
要么...
然后我尝试的LINQ TO-“HTML” Y的子节点的列表:
HtmlNode node = tables[0];
var firstTR = node.Element("tbody").Element("tr");
但同样:我没有得到含<td>
类型Y的子节点列表中的第一<tr>
节点要么...
试图让第一<tr>
内的所有<td>
节点列表中也没有完全按预期工作:
HtmlNode node = tables[0];
var allTDNodes = node.SelectNodes("tbody/tr/td");
var firstTD = allTDNodes[0];
而不是预期的y <td>
节点,我只得到三个子节点 - 两个#text
,最后一个类型为<td>
- 为什么?
好像HTML敏捷性包被曲解<td>
节点列表嵌套的节点......
任何想法?思考?提示如何解决这个问题?
很奇怪。用你的HTML例子'allTRNodes'有3个'tr'节点(最后一个是...); 'allTDNodes'在我身边有8个'td'节点(HtmlAgilityPack v2.0.50727)。还有一个假设 - 也许你在示例中没有包含的HTML代码被破坏了? – Alex 2012-03-02 10:27:28
同样在这里,最新的HAP稳定下载。 – Oded 2012-03-02 10:37:36
@Alex:是的,'allTDNodes'在我的“真实”样本中有60多个元素 - 这只是令人困惑 - 我假设如果我从给定的'trNode'开始,我会得到所有**子节点**该节点 - 不是来自整个文档的所有**节点! – 2012-03-02 12:37:50