Во второй таблице нет элементов th, тогда naziviRokova
равно нулю, а nazivPredmeta.text()
приводит к NullPointerException
.
Вы также должны быть осторожны с datumiRokova.get(i)
, так как это приведет к IndexOutOfBoundsException
, если недостаточно элементов.
В качестве общего совета попробуйте выделить "logi c" и Код интеграции "android" позволит вам более эффективно тестировать код.
Полный пример:
package org.example;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class SO_60092082 {
private static String parsirajTablicu(Element table){
String text = "\n\n\n\n\n";
Element nazivPredmeta = table.selectFirst("p");
Elements naziviRokova = table.select("th");
Elements datumiRokova = table.select("td");
datumiRokova.remove(0);
if (nazivPredmeta!=null)
text += nazivPredmeta.text()+ "\n\n";
text += safeGetText(naziviRokova, 0) + "\n";
text += " " + safeGetText(datumiRokova, 0) + "\n";
text += " " + safeGetText(datumiRokova, 4) + "\n";
text += " " + safeGetText(datumiRokova, 8) + "\n";
text += safeGetText(naziviRokova, 1) + "\n";
text += " " + safeGetText(datumiRokova, 1) + "\n";
text += " " + safeGetText(datumiRokova, 5) + "\n";
text += " " + safeGetText(datumiRokova, 9) + "\n";
text += safeGetText(naziviRokova, 2) + "\n";
text += " " + safeGetText(datumiRokova, 2) + "\n";
text += " " + safeGetText(datumiRokova, 6) + "\n";
text += " " + safeGetText(datumiRokova, 10) + "\n";
text += safeGetText(naziviRokova, 3) + "\n";
text += " " + safeGetText(datumiRokova, 3) + "\n";
text += " " + safeGetText(datumiRokova, 7) + "\n";
text += " " + safeGetText(datumiRokova, 11) + "\n";
return text;
}
private static String safeGetText(Elements datumiRokova, int i) {
return datumiRokova.size()>i ? datumiRokova.get(i).text() : "";
}
public static void main(String[] args) {
try{
StringBuilder stringBuilder = new StringBuilder();
Document doc = Jsoup.connect("https://inf.ffzg.unizg.hr/index.php/hr/studij/diplomski-studij/ispitni-rokovi?fbclid=IwAR0WuLXdooI_0wB8-vVbgZTs89jX-B0eNY0f4wmB9rScqojSqsA2oN-aQ6I").get();
Elements tables = doc.select("table");
for(Element table : tables){
stringBuilder.append("\n\n\n");
stringBuilder.append(parsirajTablicu(table));
}
System.out.println(stringBuilder);
}catch(Exception e){
e.printStackTrace();
}
}
}