我知道有很多关于解析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分钟。
答案 0 :(得分:4)
我会从每次处理一行开始。所以我首先要使用像
这样的选择器,在每个工作日之后获得四分之一小时tr td.row-label-one:contains(Tue) ~ td
如果循环数组的内容,如[&#34;星期一&#34;,&#34;星期二&#34;,...&#34;星期五&#34;],您可以处理整周。
此css查询将为您提供该工作日的td元素兄弟。 那个兄弟姐妹是那个工作日的小时。
所以只需使用9am作为基础并计算,直到找到非空元素 喜欢&#34; COSE50582 / Lec / Sem2面向对象的应用工程Gillibrand D,Mansfield GD D116&#34;
您可以在索引4处找到此元素,因此9 +(15分钟* 4)=上午10点
注意:为简单起见,我假设所有受试者的持续时间只有4个季度,否则你可以使用colspan来计算受试者的持续时间。
答案 1 :(得分:2)
您正在选择符合&#34; td&#34;的所有元素。并打印一大串。您可以将它们作为元素集合进行处理,并逐个迭代它们:
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());
}