Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jsoup解析HTML时间表_Java_Html_Jsoup - Fatal编程技术网

Java 使用Jsoup解析HTML时间表

Java 使用Jsoup解析HTML时间表,java,html,jsoup,Java,Html,Jsoup,我知道在解析HTML表时有很多问题。然而,在做了一些研究并调查了Jsoup之后,我有点被它难住了 我有时间表 我想解析出标记的文本,但要保持某种格式 通过与Jsoup混在一起,尝试可用的函数,并查看食谱和当前的API文档。从这一点上,我做到了以下几点: Document doc = Jsoup.connect("http://crwnmis3.staffs.ac.uk/Reporting/Individual;Student%20Sets;name;L2SE?&template=Onl

我知道在解析HTML表时有很多问题。然而,在做了一些研究并调查了Jsoup之后,我有点被它难住了

我有时间表

我想解析出
标记的文本,但要保持某种格式

通过与Jsoup混在一起,尝试可用的函数,并查看食谱和当前的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分钟。

您选择的是与“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());
}

我将从每次处理一行开始。因此,我首先使用一个选择器,比如

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点


注意:为了简单起见,我假设所有受试者只有4个四分之一的持续时间,否则你可以使用colspan来计算受试者的持续时间。

与其只是玩弄,不如阅读JSoup的文档并正确使用文档树。我首先得到表中的列(时间),然后得到该列中的实际单元格(实际数据)。然后您就有了时间和实际数据。您可能需要先获取
tr
s,第一个tr将给出列数,每个列之间间隔15分钟。。你需要玩那个号码。太好了。必须使用逻辑来确定正确的上课时间等等。然而,选择器正是我想要的。