我正在尝试从该站点抓取数据。我可以获取数据,但是现在我需要将所选数据添加到数据表中。以下内容即将完成,但仅返回最后一条记录。我知道它很简单,但无法弄清楚。基本上,在说完之后,for循环中Console.Writeline部分的注释掉的部分将是datagridview中所需的结果。
private void button1_Click(object sender, EventArgs e)
{
var doc = new HtmlWeb().Load("https://www.sportingcharts.com/nba/defense-vs-position/");
HtmlAgilityPack.HtmlNodeCollection teams = doc.DocumentNode.SelectNodes("//div[@class='col col-md-3']//tr/td[2]");
HtmlAgilityPack.HtmlNodeCollection points = doc.DocumentNode.SelectNodes(".//div[@class='col col-md-3']//tr/td[3]");
HtmlAgilityPack.HtmlNodeCollection positions = doc.DocumentNode.SelectNodes(".//div[@class='col col-md-3']//span[1]");
DataTable dvp_dt = new DataTable();
dvp_dt.Columns.Add("Team", typeof(string));
dvp_dt.Columns.Add("Points", typeof(string));
dvp_dt.Columns.Add("Position", typeof(string));
string[] positions_aux = positions.Where(x => x.InnerText.Length >= 6).Select(y => y.InnerText).ToArray();
DataRow row = dvp_dt.NewRow();
for (int i = 0; i < teams.Count - 1; i++)
{
var aux = i / 30;
row["Team"] = (teams[i].InnerText);
row["Points"] = (points[i].InnerText);
row["Position"] = (positions_aux[aux]);
// Console.WriteLine(teams[i].InnerText + ' ' + points[i].InnerText + ' ' + positions_aux[aux]);
}
dvp_dt.Rows.Add(row);
dataGridView2.DataSource = dvp_dt;
}
答案 0 :(得分:1)
尝试以下操作:
for (int i = 0; i < teams.Count - 1; i++)
{
DataRow row = dvp_dt.NewRow();
var aux = i / 30;
row["Team"] = (teams[i].InnerText);
row["Points"] = (points[i].InnerText);
row["Position"] = (positions_aux[aux]);
}
dataGridView2.DataSource = null;
dataGridView2.DataSource = dvp_dt;