Я пытаюсь разобрать основной (последний в дереве dom)
<table>
на этом сайте: "https://aips.um.si/PredmetiBP5/Main.asp?Mode=prg&Zavod=77&Jezik=&Nac=1&Nivo=P&Prg=1571&Let=1"
Я использую Htmlagilitypack и пишу код на C # в приложении wpf в visual studio 17.
Сейчас я использую этот код:
iso = Encoding.GetEncoding("windows-1250");
web = new HtmlWeb()
{
AutoDetectEncoding = false,
OverrideEncoding = iso,
};
//http = https://aips.um.si/PredmetiBP5/Main.asp?Mode=prg&Zavod=77&Jezik=&Nac=1&Nivo=P&Prg=1571&Let=1
string http = formatLetnikLink(l.Attributes["onclick"].Value).ToString();
var htmlProgDoc = web.Load(http);
string s = htmlProgDoc.ParsedText;
htmlprogDoc.ParsedText правильно включает все строки
которые должны быть в последней таблице
(У меня было это для отладки, только если окно часов было разбито или что-то ... idk ...)
Я попытался сначала получить все таблицы на столах на сайте. И понял, что есть 6
<table></table>
тегов на нем, даже если вы визуально видите только один. После отладки в течение пары часов я понял, что последний главный стол - последний
<table>
в dom-дереве, и что синтаксический анализатор полностью разбирает все
<tr>
теги, которые есть в таблице. Это проблема, мне нужны все теги tr.
var tables = htmlProgDoc.DocumentNode.SelectNodes("//table");
6 раз
<table></table>
теги, как и ожидалось, и каждый из них полностью проанализирован, включая все их строки и столбцы, кроме последнего, в последнем он анализирует только первые две строки, а затем анализатор появляется, чтобы добавить
</table>
сам по себе, я также пытался использовать прямой селектор xpath, скопированный из firefox:
"/ html / body / div / center [2] / font / font / font / table" вместо "// table"
который нашел правильную таблицу, но таблица также содержала только первые 2 строки
var theTableINeed = tables.Last();
//contains the correct table which I need, but with only the first two rows