使用 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);
}
我有一个包含 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);
}