JavaRush /Java блогу /Random-KY /jsoup китепканасы менен html талдоо
Сергей
Деңгээл
Москва

jsoup китепканасы менен html талдоо

Группада жарыяланган
Андыктан биз сайттан конкреттүү маалымат алгыбыз келет. Келгиле, муну этап-этабы менен кантип жасоону карап көрөлү. jsoup китепканасы менен html талдоо - 1Биринчиден, биз алышыбыз керек Document. Бул биздин html баракчабыздын көрүнүшү. Jsoup сайтты сайтка айландыруунун бир нече жолу бар Document. Серверге туташуу
Document document = Jsoup.connect("https://hh.ru/").get();
Jsoup өзү сайтка туташат. Бул ыкма эң жөнөкөй, бирок ал сыноо үчүн гана ылайыктуу. Ыңгайлуу жана ийкемдүү http кардарлары бар. Кайсы http кардарын колдонбоңуз, сурамга , User-Agentмисалы, мааниси менен башты кошуңуз Chrome/81.0.4044.138. Бул башты колдонуу менен server сиз кайсы түзмөктөн туташканыңызды аныктайт. Бул тема болбосо, server сизди бот деп эсептейт жана сизге тыюу салышы мүмкүн. Файлдан ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Бул an objectти алуунун негизги жолу Document. Акыркы аргумент "hh.ru"- бул базалык URI. Бул сайтта бар салыштырмалуу шилтемелерди түзүү үчүн зарыл. Саптан
String html =
                "<html>                                                                       " +
                "    <head>                                                                   " +
                "        <title href=\"hh.ru/vacancy?home\">                                  " +
                "            Работа в Москве, поиск персонала и публикация вакансий - hh.ru   " +
                "        </title>                                                             " +
                "    </head>                                                                  " +
                "    <body>                                                                   " +
                "        <div class=\"header main\">                                          " +
                "            <h1>Работа найдется для каждого</h1>                             " +
                "            <div>Поиск вакансий</div>                                        " +
                "        </div>                                                               " +
                "        <div class=\"content\">                                              " +
                "            <div>Вакансии дня</div>                                          " +
                "            <div id=\"123\">Компании дня</div>                               " +
                "            <div>Работа из дома</div>                                        " +
                "        </div>                                                               " +
                "    </body>                                                                  " +
                "</html>                                                                      ";

        Document document = Jsoup.parse(html, "hh.ru");
Андан кийин, мен жөнөкөйлөтүлгөн сайтты билдирген бул html китепканасын көрсөтөм. Tagди алуу Талдоодо негизги милдет - керектүү тегди алуу. Бул ыкманы колдонуу менен жасайбыз select. Белгилей кетчү нерсе, ал ар дайым тегдердин тизмесин кайтарат. Эч кандай тэгдер табылбаса, тизме бош болот. Метод аргументи катары тегдер изделген CSS селекторунан өтүшүңүз керек. Мен селекторлор жөнүндө кененирээк токтолоюн, анткени бардык иш туура селекторду жазууга байланыштуу. Адатта, биз аны бир тегди кайтарып тургандай кылып түзүшүбүз керек.
Elements h1 = document.select("h1");
System.out.println(h1);
Tagдерди h1 алуу

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Tagдерди алуу title. Белги тегдин ичинде уя салынган >тэгдерди тандайтtitlehead
Elements divs = document.select("body > div");
divКыстарылган тэгдерди алыңызbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Биринчи тегди divичине киргизиңиз body. Tagди сериялык номер боюнча алуу жаман жол, анткени анын сайттагы орду өзгөрүшү мүмкүн. Tagди абсолюттук параметрлер менен аныктоо жакшы. Бул параметрлер атрибуттар classжанаid
Elements contentElem = document.select("body > div.content");
divУюшкан "контент" классы менен тег алыңызbody
Elements idElem = document.select("#123");
"123" идентификатору менен тэгдерди алыңыз
Elements divHeader = document.select("body > div.header.main :not(h1)");
div"header" жана "main" класстары менен тегдерди алыңыз , ичинде уя салынган body, бирок тегдери жок h1 . Чыгуу:

<div>
 Поиск вакансий
</div>
Элементтердин ыкмалары Биз тизмени алгандан кийин, Elementsандан маалыматтарды чыгара алабыз. Эске сала кетейин, көбүнчө селектор бир тегди издейт, б.а. Elementsөлчөмү 1 болушу керек .
elements.size();
табылган тегдердин саны
elements.get(0);
табылгандардын тизмесинен биринчи тэгди алуу
elements.text();
тегге киргизилген текст
elements.attr("href");
"href" атрибут мааниси
elements.outerHtml();
Tagдин сап чагылдырылышы Эгер сиз элемент тандагычты тез алуу керек болсо, браузерде иштеп чыгуучу панелди (f12) ачып, элементти оң баскыч менен чыкылдатып, "codeду көрүү", тегди оң баскыч менен чыкылдатып, андан кийин "Көчүрүү" " Көчүрмө тандагыч». Мындай селектор оптималдуу болбойт, бирок ал тез натыйжа үчүн абдан ылайыктуу болуп саналат. Корутунду Бул Jsoup китепканасы менен иштөөнүн негиздери. Бирок бул сайттарды талдоо үчүн жетиштүү. Ишенимдүү иштөө үчүн сизге чыныгы сайттарда селекторлорду жазуу боюнча машыгуу керек. Ps Бул китепкана 38-деңгээлдеги чоң маселени чечүү үчүн колдонулат jsoup китепканасы менен html талдоо - 1jsoup китепканасы менен html талдоо - 3
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION