[英]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.