1

我正在尝试匹配带有正则表达式的表,但我遇到了一些问题。我无法弄清楚为什么它不能正确匹配。这是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 条信息:Queue 下面的 td 内的数据和 Wait 下面的 td 内的数据(因此是 Queue 计数和等待时间)。显然,这些数字会经常更新。

这是我拉初始表的正则表达式,但它不起作用:

Match statstable = Regex.Match(this.html, "<table class=\"integrationteamstats\">(.*?)</table>");

而且我不确定应该使用什么正则表达式从 td 获取数据。

在任何人问之前,不,我无法更新 HTML 以具有 ID 或任何类似性质的东西。它几乎是这样。唯一一致的是 td 的位置。

4

1 回答 1

5

我建议不要使用正则表达式,而是使用HTML Agility Pack来解析 HTML 并查询其结构。

什么是 Html Agility Pack (HAP)?

这是一个敏捷的 HTML 解析器,它构建一个读/写 DOM 并支持普通的 XPATH 或 XSLT(实际上你不必了解 XPATH 或 XSLT 就可以使用它,不用担心......)。它是一个 .NET 代码库,允许您解析“网络之外”的 HTML 文件。解析器对“真实世界”格式错误的 HTML 非常宽容。对象模型与 System.Xml 的提议非常相似,但用于 HTML 文档(或流)。

一般来说,正则表达式是解析 HTML 的糟糕选择

于 2012-12-18T16:04:42.513 回答