Парсинг html-таблиц с помощью jsoup

Я разбираю таблицы с помощью jsoup. Мне нужно подключиться к стоячим столам дивизиона с этого сайта: https://www.basketball-reference.com/leagues/NBA_2006.html. Не знаю, как анализировать таблицы, потому что мне нужно использовать один и тот же метод для каждой стоячей таблицы дивизиона, но идентификатор отличается для более старых сезонов (например, id = "divs_standings_W", "id = "divs_standings_E" и "id = "divs_standings_"). Ссылка на более ранний сезон: https://www.basketball-reference.com/leagues/NBA_1950.html.

Как я могу проверить, существует ли таблица с данным идентификатором, и если она существует, поместить ее в таблицу переменных? Не имейте много релевантного кода.

Document doc = Jsoup.connect("https://www.basketball-reference.com/leagues/NBA_1950.html").get();
Elements table = doc.select("table[id=\"divs_standings_\"]");

Вы можете проверить, если table != null - если правда, то он существует.

TDG 27.05.2019 20:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто использовать сопоставление префикса. Используйте table[id^ = "divs_standings_"]. Это будет соответствовать всем таблицам с идентификаторами, начинающимися с divs_standings_:

Document doc = Jsoup.connect("https://www.basketball-reference.com/leagues/NBA_1950.html").get();
Element table = doc.selectFirst("table[id^=\"divs_standings_\"]");

Это будет работать для старых и новых сезонов.

Чтобы обернуть это в метод, вы можете просто использовать что-то вроде этого:

private static void processTable(String url) throws IOException {
    Document doc = Jsoup.connect(url).get();
    Element table = doc.selectFirst("table[id^=\"divs_standings_\"]");
    System.out.println(table);
}

и вызовите его с обоими URL-адресами:

processTable("https://www.basketball-reference.com/leagues/NBA_1950.html");
processTable("https://www.basketball-reference.com/leagues/NBA_2006.html");

Вы также можете использовать сопоставление с образцом, если у вас есть более сложные идентификаторы. Для этого перейдите по ссылке выше.

Другие вопросы по теме