JavaRush /Java блогы /Random-KK /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"тақырып" және "негізгі" сыныптары бар тегтерді алыңыз . Шығару: bodyh1

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