diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/out.txt b/out.txt new file mode 100644 index 0000000..0267480 --- /dev/null +++ b/out.txt @@ -0,0 +1,35 @@ +00 Наука в целом (информационные технологии - 004) +1 Философия. Психология +2 Религия. Теология +30 Теория и методы общественных наук +31 Демография. Социология. Статистика +32 Политика +33 Экономика. Народное хозяйство. Экономические науки +34 Право. Юридические науки +35 Государственное административное управление. Военное искусство. Военные науки +36 Обеспечение духовных и материальных жизненных потребностей. Социальное обеспечение. Социальная помощь. Обеспечение жильем. Страхование +37 Народное образование. Воспитание. Обучение. Организация досуга +39 Этнография. Нравы. Обычаи. Жизнь народа. Фольклора +50 Общие вопросы математических и естественных наук +51 Математика +52 Астрономия. Геодезия +53 Физика +54 Химия. Кристаллография. Минералогия +55 Геология. Геологические и геофизические науки +56 Палеонтология +57 Биологические науки +58 Ботаника +59 Зоология +60 Прикладные науки. Общие вопросы +61 Медицина. Охрана здоровья. Пожарное дело +62 Инженерное дело. Техника в целом +63 Сельское хозяйство. Лесное хозяйство. Охота. Рыбное хозяйство +64 Домоводство. Коммунальное хозяйство. Служба быта +65 Управление предприятиями. Организация производства, торговли и транспорта +66 Химическая технология. Химическая промышленность. Пищевая промышленность. Металлургия. Родственные отрасли +67 Различные отрасли промышленности и ремесла. Механическая технология +68 Различные отрасли промышленности и ремесла, производящие конечную продукцию. Точная механика +69 Строительство. Строительные материалы. Строительно-монтажные работы +7 Искусство. Декоративно-прикладное искусство. Фотография. Музыка. Игры. Спорт +8 Языкознание. Филология. Художественная литература. Литературоведение +9 География. Биография. История diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a6ce7ae --- /dev/null +++ b/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + ru.mcs.udk + udk-site-parser + 1.0-SNAPSHOT + + + 23 + 23 + UTF-8 + + + + + org.jsoup + jsoup + 1.15.3 + + + com.fasterxml.jackson.core + jackson-databind + 2.17.2 + + + \ No newline at end of file diff --git a/src/main/java/ru/mcs/udk/UdkSiteParser.java b/src/main/java/ru/mcs/udk/UdkSiteParser.java new file mode 100644 index 0000000..22d8aed --- /dev/null +++ b/src/main/java/ru/mcs/udk/UdkSiteParser.java @@ -0,0 +1,39 @@ +package ru.mcs.udk; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; + +public class UdkSiteParser { + public static void main(String[] args) throws InterruptedException, FileNotFoundException { + System.setOut(new PrintStream(new FileOutputStream("out.txt"), true, StandardCharsets.UTF_8)); + + ObjectMapper objectMapper = new ObjectMapper(); + try { + var document = Jsoup.connect("https://www.teacode.com/online/udc/") + .timeout(10000) + .followRedirects(true) + .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0") + .execute().parse(); + + Elements one = document.select("table tr[bgcolor=#eaeaea] td:eq(0) a"); + Elements two = document.select("table tr[bgcolor=#eaeaea] td:eq(1)[align=left]"); + + if (one.size() == two.size()) { + for (int i = 0; i < one.size(); i++) { + Element udkNumber = one.get(i); + Element udkText = two.get(i); + System.out.printf("%s\t%s%n", udkNumber.text(), udkText.text()); + } + } + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } +}