如何从C#中的HTML表中获取排序后的值?

时间:2019-02-08 18:44:48

标签: c# html .net winforms html-agility-pack

您好,程序员。 我现在花了一整天的时间阅读线程来解决此问题。 我正在从自动生成的日程表中解析HTML,6年前在此线程上讨论了相同的日程表程序:Parsing complex HTML tables

但是,这个java / javascript解决方案对我不起作用。同样,上述程序无法正常工作,我认为他们发布了该软件的新版本。这是我要解析的示例:https://www.ostfalia.de/cms/de/b/studium/stundenplaene/download/ss19_b_stdgrp_ai_6.html

我需要按正确的顺序解析数据,因为我想用它生成一个iCalendar文件,或者将数据传递/发送到自写的时间表应用程序中

我正在使用HTML Agility Pack,并且Im已经可以成功解析我需要的内容,但是我无法以正确的顺序将其完整拆分,因为HAP像任何其他解析器一样按行显示。我是如此的拼命,我几乎只计算空值trs来估计何时开始新行,但这行不通,因为程序有时空行更少。你们有人有主意吗?

这是获取我所需信息的代码:

        WebClient client = new WebClient();
        string html = client.DownloadString("https://www.ostfalia.de/cms/de/b/studium/stundenplaene/download/ss19_b_stdgrp_ai_6.html");

        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(html);

        var erg = doc.DocumentNode.SelectNodes("//td[@class='v']");

        for (int i = 0; i < erg.Count; i++)
        {
            txt_check.Text = (erg[i].InnerText);
            list_check.Items.Add(erg[i].InnerText);
        }

“类v”是事件,而“类t”是时间,在此示例中,它只是类v

我得到:

class ='v'的输出如下:

10:30-12:00 UhrAI 6.1 Komponentenbasierte SoftwareentwicklungB。 RogallaB 109

13:00-14:30 UhrAI WPF-12 CCNA 2思科路由和交换时间HollmannA 201

13:00-14:30 UhrAI WPF研究所你Betrieb einer Datenb。一种。 B.甲骨文HeringA

14:45-16:15 UhrAI WPF Mathematik III for InformatikerT。 WaldeerB 27 114

14:45-16:15 UhrAI WPF-18 AutomatisierungstechnikF。 DziembowskiA 107

class ='t'的输出如下:

“ Di,05.03.2019”

“ Mi,06.03.2019”

“ Do,07.03.2019”

“ Fr,08.03.2019”

“ Sa,2019年3月9日”

我希望有人对如何对字典或列表中的信息进行排序和匹配以使其在ICS中获得信息有个想法。

输出应为:

“ MI,06.03.2019,8:45-10:15,AI 6.1 AI 6.1 Komponentenbasierte Softwareentwicklung B. Rogalla B109”

... 因此,我可以将其以ICS格式或日期/时间格式用于日历应用程序或其他工具。

整个HTML的垃圾箱: https://pastebin.com/hHbJTujN

输出的一些图片: https://drive.google.com/open?id=16Y_hISdVEvzlrS6LCmBMcwAarGhz__t0

0 个答案:

没有答案