.NET 4.x Html Agility Pack. Парсинг и запись данных в DataTable - C#

Узнай цену своей работы

Формулировка задачи:

Не могу спарсить таблицу, например такую: http://www.vyatsu.ru/files/schedule/1.htm ( код вставить сюда не могу т.к ограничение по символам) Есть пример, но не могу подогнать под свою таблицу, чтобы полностью получить таблицу.
var doc = new HtmlDocument();
doc.Load(url);
 
var nodes = doc.DocumentNode.SelectNodes("//table/tr");
var table = new DataTable("MyTable");
 
var headers = nodes[0]
    .Elements("th")
    .Select(th => th.InnerText.Trim());
foreach (var header in headers)
{
    table.Columns.Add(header);
}
 
var rows = nodes.Skip(1).Select(tr => tr
    .Elements("td")
    .Select(td => td.InnerText.Trim())
    .ToArray());
foreach (var row in rows)
{
    table.Rows.Add(row);
}
Помогите, кто знает

Решение задачи: «.NET 4.x Html Agility Pack. Парсинг и запись данных в DataTable»

textual
Листинг программы
    public  int GetStringCounter(string value, string findstr)
    {
        int index = 0;
        int counter = 0;
        while ((index = value.IndexOf(findstr, index)) != -1)
        {
            index += findstr.Length;
            counter++;
        }
        return counter;
    }
 
 
    public  string ExtractAndSumString(string value)
    {
 
        StringBuilder builder = new StringBuilder(256);
        int index1 = 0;
        int index2 = 0;
        string findstr1 = ">";
        string findstr2 = "<";
        while ((index1 = value.IndexOf(findstr1, index1)) != -1)
        {
            index1 += findstr1.Length;
            index2 = value.IndexOf(findstr2, index1);
       
            if (index2 != -1)
                builder.Append(value.Substring(index1, index2 - index1));
           else
                builder.Append(value.Substring(index1));
        }
        return builder.ToString().Trim();
    }
 
 
    public  List<String> ExtractCellsOfTable(string value)
    {
 
        List<String> list = new List<string>();
        int index1 = 0;
        int index2 = 0;
        string findstr1 =  "<TD";
        string findstr2 = "</TD>";
        while ((index1 = value.IndexOf(findstr1, index1)) != -1)
        {
            index1 += findstr1.Length;
            index2 = value.IndexOf(findstr2, index1);
            if (index2 != -1)
               list.Add(value.Substring(index1, index2 - index1));
     
        }
        return list;
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы