我正在尝试使用正则表达式匹配表格,但我遇到了一些问题。我无法弄清楚它为什么不能正常匹配。这是HTML:
<table class="integrationteamstats">
<tbody>
<tr>
<td class="right">
<span class="mediumtextBlack">Queue:</span>
</td>
<td class="left">
<span class="mediumtextBlack">0</span>
</td>
<td class="right">
<span class="mediumtextBlack">Aban:</span>
</td>
<td class="left">
<span class="mediumtextBlack">0%</span>
</td>
<td class="right">
<span class="mediumtextBlack">Staffed:</span>
</td>
<td class="left">
<span class="mediumtextBlack">0</span>
</td>
</tr>
<tr>
<td class="right">
<span class="mediumtextBlack">Wait:</span>
</td>
<td class="left">
<span class="mediumtextBlack">0:00</span>
</td>
<td class="right">
<span class="mediumtextBlack">Total:</span>
</td>
<td class="left">
<span class="mediumtextBlack">0</span>
</td>
<td class="right">
<span class="mediumtextBlack">On ACD:</span>
</td>
<td class="left">
<span class="mediumtextBlack">0</span>
</td>
</tr>
</tbody>
</table>
我需要获得2条信息: 队列中的td内部的数据和下面的td内的数据等待(所以队列计数和等待时间)。很明显,这些数字会经常更新。
这是我用于提取初始表的正则表达式,但它不起作用:
Match statstable = Regex.Match(this.html, "<table class=\"integrationteamstats\">(.*?)</table>");
而且我不确定我应该用什么正则表达式从td获取数据。
在有人要求之前,没有办法我无法更新HTML以获得ID或其他任何性质。它几乎就是这样。唯一一致的是td的位置。
答案 0 :(得分:5)
我建议使用HTML Agility Pack来解析HTML并查询其结构,而不是正则表达式。
什么是Html Agility Pack(HAP)?
这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......)。它是一个.NET代码库,允许您解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型与提出System.Xml非常相似,但对于HTML文档(或流)。