JavaRush /Java blogi /Random-UZ /Jsoup kutubxonasi bilan html-ni tahlil qilish
Сергей
Daraja
Москва

Jsoup kutubxonasi bilan html-ni tahlil qilish

Guruhda nashr etilgan
Shuning uchun biz saytdan aniq ma'lumot olishni xohlaymiz. Keling, buni bosqichma-bosqich qanday qilishni ko'rib chiqaylik. jsoup kutubxonasi bilan html-ni tahlil qilish - 1Avval biz olishimiz kerak Document. Bu bizning html sahifamizning ko'rinishi. Jsoup saytni saytga aylantirishning bir necha usullariga ega Document. Serverga ulaning
Document document = Jsoup.connect("https://hh.ru/").get();
Jsoupning o'zi saytga ulanadi. Bu usul eng oddiy, ammo u faqat sinov uchun javob beradi. Ko'proq qulay va moslashuvchan http mijozlari mavjud. Shuni ham yodda tutingki, qaysi http mijozidan foydalanmasligingizdan qat'iy nazar, so'rovga User-Agentkabi qiymat bilan sarlavha qo'shing Chrome/81.0.4044.138. Ushbu sarlavha yordamida server qaysi qurilmadan ulanganingizni aniqlaydi. Ushbu sarlavhasiz server sizni bot deb hisoblaydi va sizni taqiqlashi mumkin. Fayldan ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Bu ob'ektni olishning asosiy usuli Document. Oxirgi argument "hh.ru"asosiy URI hisoblanadi. Bu saytda mavjud bo'lgan nisbiy havolalardan mutlaq havolalarni yaratish uchun kerak. Chiziqdan
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");
Keyinchalik, soddalashtirilgan saytni ifodalovchi ushbu html-da kutubxonani namoyish qilaman. Teg olish Tahlil qilishda asosiy vazifa kerakli tegni olishdir. Biz buni usul yordamida qilamiz select. E'tibor bering, u har doim teglar ro'yxatini qaytaradi. Agar teglar topilmasa, ro'yxat bo'sh bo'ladi. Metod argumenti sifatida teglar qidiriladigan CSS selektoridan o'tishingiz kerak. Men selektorlar haqida batafsilroq to'xtalib o'taman, chunki barcha ish to'g'ri selektorni yozishdan iborat. Odatda biz uni bitta tegni qaytaradigan tarzda tuzishimiz kerak.
Elements h1 = document.select("h1");
System.out.println(h1);
Teg teglarini oling h1 Chiqish:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Teglarni oling title. Belgi teg ichiga joylashtirilgan >teglarni tanlaydititlehead
Elements divs = document.select("body > div");
Teglarni divichkariga kiritingbody
Elements firstDiv = document.select("body > div:nth-child(1)");
divga kiritilgan birinchi tegni oling body. Tegni seriya raqami bo'yicha olish yomon yo'l, chunki uning saytdagi o'rni o'zgarishi mumkin. Mutlaq parametrlar yordamida tegni aniqlash yaxshiroqdir. Bu parametrlar atributlar classvaid
Elements contentElem = document.select("body > div.content");
div"Kontent" klassi bilan tegni olingbody
Elements idElem = document.select("#123");
"123" identifikatorli teglarni oling
Elements divHeader = document.select("body > div.header.main :not(h1)");
div"sarlavha" va "asosiy" toifali teglarni oling , ichiga o'rnatilgan body, lekin teglarsiz h1 .

<div>
 Поиск вакансий
</div>
Element usullari Biz ro'yxatni olganimizdan so'ng, Elementsundan ma'lumotlarni olishimiz mumkin. Eslatib o'taman, odatda selektor bitta tegni qidiradi, ya'ni. Elementshajmi 1 bo'lishi kerak .
elements.size();
topilgan teglar soni
elements.get(0);
topilganlar ro'yxatidan birinchi tegni oling
elements.text();
tegga kiritilgan matn
elements.attr("href");
"href" atribut qiymati
elements.outerHtml();
Tegning string tasviri Agar siz tezda element selektorini olishingiz kerak bo'lsa, brauzerda ishlab chiquvchi panelini (f12) oching, elementni o'ng tugmasini bosing, "kodni ko'ring", tegni o'ng tugmasini bosing, so'ng "Nusxalash" " Nusxa ko'chirish selektori". Bunday selektor optimal bo'lmaydi, lekin tez natijalarga erishish uchun juda mos keladi. Xulosa Bu Jsoup kutubxonasi bilan ishlash asoslari. Ammo bu saytlarni tahlil qilish uchun etarli. Ishonch bilan ishlash uchun sizga kerak bo'lgan narsa haqiqiy saytlarda selektor yozishni mashq qilishdir. Ps Bu kutubxona 38-darajadagi katta muammoni hal qilish uchun ishlatiladi jsoup kutubxonasi bilan html-ni tahlil qilish - 1jsoup kutubxonasi bilan html-ni tahlil qilish - 3
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION