обратите внимание, что вы выбрали все <tr>
Elements tableElements = doc.select("table.wikitable.sortable");
Elements rows = tableElements.select("tr");
, включая заголовки.Тогда его первой строкой будет заголовок, который не имеет <td>
, затем на первой итерации он получил исключение IndexOutOfBoundsException
при попытке получить 3-й элемент <td>
, потому что его там не существует.
Просто исключите первый <tr>
заголовок
// start from 1, exclude 0 which is a header without td's
for (int i = 1; i < rows.size(); i++) {
Elements cols = rows.get(i).select("td");
System.out.println(cols.get(column).text());
}