Селектор CSS ничего не возвращает
Ситуация следующая - приведенный код должен выбирать данные со страницы в нужном порядке, по датам. И он это исправно делает до середины 14-го октября - то есть внутри цикла с i = 86 селектор в переменной away (по-моему на j = 4, но это не точно, матч Витязь - Автомобилист) не возвращает ничего. И далее все селекторы начинают возвращать пустоту. Любопытно, что даже при обращении к ним напрямую, не в цикле, происходит аналогичный возврат пустых значений. Вопрос в том, каким образом я могу получить эти данные? Может есть иной способ, лучше/правильнее.
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
public class ResultParser {
private final static String USER_AGENT = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36";
public void getDataFromURL() {
Document document = null;
try {
document = Jsoup.connect("https://www.khl.ru/calendar/")
.userAgent(USER_AGENT)
.referrer("http://www.google.com")
.get();
} catch (IOException e) {
e.printStackTrace();
}
assert document != null;
for (int i = 1; i <= 282; ) {
Elements date = document.select("#tab-calendar-all > div > div:nth-child(" + i + ") > b:nth-child(2)");
System.out.println("DATE:" + date.text());
i++;
for (int j = 1; j < 12; j++) {
Elements home = document.select(
"#tab-calendar-all > div > div:nth-child(" + i + ") > ul > li > dl:nth-child(" + j + ") > dd > h5 > a");
Elements away = document.select(
"#tab-calendar-all > div > div:nth-child(" + i + ") > ul > li > dl.b-details.m-club.m-rightward > dd > h5 > a");
Elements scoreOrTime = document.select(
"#tab-calendar-all > div > div:nth-child(" + i + ") > ul > li > dl.b-score > dt > h3");
Elements periodScore = document.select(
"#tab-calendar-all > div > div:nth-child(" + i + ") > ul > li > dl.b-score > dd > ul");
System.out.println("HOME: " + home.text());
System.out.println("AWAY: " + away.text());
System.out.println("SCORE OR TIME: " + scoreOrTime.text());
System.out.println("PERIOD SCORE: " + periodScore.text());
}
}
}
Ответы (1 шт):
Отбой тревоге. Методом истеричного неконтролируемого поиска ответ был найден:
.maxBodySize(Integer.MAX_VALUE)
в блоке получения документа расширял размер выгрузки, в которую уже попадали все данные. То есть должно быть:
document = Jsoup.connect("https://www.khl.ru/calendar/")
.userAgent(USER_AGENT)
.maxBodySize(Integer.MAX_VALUE)
.referrer("http://www.google.com")
.get();