JavaRush /Блоги Java /Random-TG /Таҳлили html бо китобхонаи jsoup
Сергей
Сатҳи
Москва

Таҳлили html бо китобхонаи jsoup

Дар гурӯҳ нашр шудааст
Аз ин рӯ, мо мехоҳем аз сайт маълумоти мушаххас гирем. Биёед бубинем, ки чӣ тавр ин корро зина ба зина анҷом дод. Таҳлor html бо китобхонаи jsoup - 1Аввал ба мо лозим аст, ки Document. Ин намоиши саҳифаи html мост. Jsoup дорои якчанд роҳҳо барои табдил додани сайт ба Document. Ба server пайваст шавед
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 намоиш хоҳам дод, ки сайти соддакардашударо ифода мекунад. Гирифтани тег Вазифаи асосӣ ҳангоми таҳлил ин гирифтани теги дилхоҳ аст. Мо инро бо истифода аз усул иҷро мекунем select. Дар хотир доред, ки он ҳамеша рӯйхати барчаспҳоро бармегардонад. Агар ягон барчасп пайдо нашавад, рӯйхат холӣ хоҳад буд. Шумо бояд интихобкунандаи CSS-ро гузаронед, ки тавассути он тегҳо ҳамчун аргументи усул ҷустуҷӯ карда мешаванд. Ман дар бораи селекторҳо муфассалтар таваққуф мекунам, зеро тамоми кор аз навиштани селектори дуруст меравад. Одатан, мо бояд онро созем, то он як барчаспро баргардонад.
Elements h1 = document.select("h1");
System.out.println(h1);
Гирифтани барчаспҳои барчаспҳо h1 Натиҷа:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Tagҳо гиред title. Аломат >барчаспҳои titleдар дохor тег ҷойгиршударо интихоб мекунадhead
Elements divs = document.select("body > div");
Барчаспҳоро divдар дохor худ ҷойгир кунедbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Аввалин барчаспро divдар лона ҷойгир кунед body. Гирифтани барчасп аз рӯи рақами силсилавӣ роҳи бад аст, зеро мавқеи он дар сайт метавонад тағир ёбад. Беҳтар аст, ки тегро бо истифода аз параметрҳои мутлақ муайян кунед. Ин параметрҳо атрибутҳо classваid
Elements contentElem = document.select("body > div.content");
Баргеро divбо синфи "content" гиред, ки дар он ҷойгир шудаастbody
Elements idElem = document.select("#123");
Барчаспҳоро бо ID "123" гиред
Elements divHeader = document.select("body > div.header.main :not(h1)");
Tagҳоро divбо синфҳои "сарлавҳа" ва "маин", ки дар лона ҷойгир шудаанд body, вале бе тегҳо гиред h1 . Натиҷа:

<div>
 Поиск вакансий
</div>
Усулҳои Элементҳо Вақте ки мо рӯйхатро гирифтем, Elementsмо метавонем аз он маълумот гирем. Хотиррасон мекунам, ки одатан селектор як тегро ҷустуҷӯ мекунад, яъне. бояд Elementsандозаи 1 бошад.
elements.size();
шумораи барчаспҳои ёфтшуда
elements.get(0);
аз руйхати пайдошуда теги якумро гиред
elements.text();
матни дар тег ҷойгиршуда
elements.attr("href");
арзиши атрибути "href"
elements.outerHtml();
Намоиши сатри тег Агар ба шумо лозим аст, ки зуд интихобкунандаи элементро ба даст оред, панели таҳиякунандаро (f12) дар браузер кушоед, тугмаи рости элементро клик кунед, "рамзро бинед", тегро клик кунед ва сипас "Нусхабардорӣ" " Интихобкунандаи нусхабардорӣ». Чунин селектор оптималӣ нахоҳад буд, аммо он барои натиҷаҳои зуд мувофиқ аст. Хулоса Ин асосҳои кор бо китобхонаи Jsoup мебошад. Аммо ин барои таҳлor сайтҳо кофӣ аст. Барои боваринок кор кардан, ба шумо танҳо машқ кардани интихоби интихобкунандагон дар сайтҳои воқеӣ лозим аст. Ps Ин китобхона барои ҳалли мушкилоти калон дар сатҳи 38 истифода мешавад Таҳлor html бо китобхонаи jsoup - 1Таҳлor html бо китобхонаи jsoup - 3
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION