繁体   English   中英

使用Jsoup解析HTML时间表

[英]Parsing a HTML timetable using Jsoup

我了解解析HTML表存在很多问题。 但是,在进行了一些研究并研究了Jsoup之后,我对此感到有些困惑。

我有时间表

在此处输入图片说明

我想解析出<td>标记的文本,但将其保留为某种格式。

通过与Jsoup搞混来试用可用的功能,并查看Cookbook和当前的API文档。 由此,我设法做到了以下几点;

Document doc = Jsoup.connect("http://crwnmis3.staffs.ac.uk/Reporting/Individual;Student%20Sets;name;L2SE?&template=Online%20One%20Page%20Student%20Set&days=1-5&periods=5-53&width=0&height=0").get();

String title = doc.select("td").text();      
System.out.println(title);

唯一的问题是这会打印出一个长字符串。

我宁愿将数据分成可管理的块。 也许我可以做一个title.Split();
但是,这将意味着没有演讲时间。 除非没有多余的空白计数和时间计数,否则假设每个空白为15分钟。

我将从每次处理一行开始。 因此,我将首先使用每个选择器来获取每个工作日后的一刻钟

tr td.row-label-one:contains(Tue) ~ td

如果循环像[“ Mon”,“ Tue”,...“ Fri”]这样的数组的内容,则可以处理整周。

此CSS查询将为您提供该工作日中的td元素同级。 这些兄弟姐妹是那个工作日中的每刻钟。

因此,只需使用上午9点作为基础并计数,直到找到一个非空元素,例如“ COSE50582 / Lec / Sem2面向对象的应用程序工程Gillibrand D,Mansfield GD D116”

您可以在索引4处找到此元素,因此9 +(15分钟* 4)= 10 am

注意:为简单起见,假设所有主题的持续时间只有4个季度,否则您可以使用colspan计算主题持续时间。

您正在选择所有与“ td”匹配的元素,并打印其中一个大字符串。 您可以将它们作为元素的集合来获取,并像这样一个接一个地遍历它们:

Document doc = Jsoup.connect("http://crwnmis3.staffs.ac.uk/Reporting/Individual;Student%20Sets;name;L2SE?&template=Online%20One%20Page%20Student%20Set&days=1-5&periods=5-53&width=0&height=0").get();
Elements titles = doc.getElementsByTag("td");      
for(Element e : titles) {
    System.out.println(e.text());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM