Сборка узлов C # с использованием таблицы HTMLAgilityPack to Data - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь очистить данные с этого сайта.Я могу получить данные, но теперь мне нужно добавить выбранные данные в таблицу данных.Следующее уже почти завершено, но оно возвращает только последнюю запись.Я знаю что-то простое, но просто не могу понять это.По сути, закомментированная часть для Console.Writeline в цикле for будет желаемыми результатами в таблице данных после того, как все сказано и сделано.

    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;
    }

1 Ответ

0 голосов
/ 24 октября 2018

Попробуйте следующее:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...