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