Я разбираю таблицы с помощью 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[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");
Вы также можете использовать сопоставление с образцом, если у вас есть более сложные идентификаторы. Для этого перейдите по ссылке выше.
Вы можете проверить, если
table != null
- если правда, то он существует.