Я анализирую таблицы, используя 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 / league / NBA_1950.html .
id="divs_standings_W"
"id="divs_standings_E"
"id="divs_standings_"
Как я могу проверить, существует ли таблица с данным идентификатором и если она существует, поместить ее в таблицу переменных? Не иметь много соответствующего кода.
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_:
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");
Вы также можете использовать сопоставление с образцом, если у вас есть более сложные идентификаторы.Проверьте ссылку выше для этого.