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

时间:2017-12-10 21:05:03

标签: c# html-agility-pack

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

我想将日期放在一个框中,另外两个框中的其他2个数字也放在一个框中。

HTML ex:

<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之后的计数是我的数据开始的地方。有标题,但我不知道如何从这种形式的特定标题中提取数据。

1 个答案:

答案 0 :(得分:0)

首先,您需要获得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);
}