使用 HTML Agility Pack 将所有数据加载到列表框中?

Using HTML Agility Pack to load all data into listboxes?

我有一个包含 300 多行的页面,我想将它们全部加载到一个列表框中,但列表不同。

我想把日期放在一个盒子里,另外 2 个数字也放在另外 2 个盒子里。

HTML 例如:

<table>
<tr>
<td>01/01/2017</td>
<td>100</td>
<td>500</td>
</tr>
<tr>
<td>01/02/2017</td>
<td>200</td>
<td>400</td>
</tr>
</table>

我的代码:

        private void LoadHTML()
    {
        int count = 0;
        var link = @"http://example.com/data";
        HtmlWeb Web = new HtmlWeb();
        var htmlDoc = Web.Load(link);
        var node = htmlDoc.DocumentNode.SelectNodes("//td");

        foreach (var x in node)
        {
            count = count + 1;
            if (count > 5)
            {
                listBox1.Items.Add(x.InnerText);
            }
        }
    }

listbox1 添加来自 x 的所有数据,因为一切都是 td。 tr 会添加每一行,但我没有什么可以拆分数据的。 5 之后的计数是我的数据开始的地方。有 headers 但我不知道如何从这种形式的特定 headers 中提取数据。

首先你需要得到一个tr个节点。

接下来,迭代它并得到 td 个节点。

var trNodes = htmlDoc.DocumentNode.SelectNodes("//tr");

foreach (var tr in trNodes)
{
    var tdNodes = tr.SelectNodes("./td");

    listBox1.Items.Add(tdNodes[0].InnerText);
    listBox2.Items.Add(tdNodes[1].InnerText);
    listBox3.Items.Add(tdNodes[2].InnerText);
}