Shuning uchun biz saytdan aniq ma'lumot olishni xohlaymiz. Keling, buni bosqichma-bosqich qanday qilishni ko'rib chiqaylik. Avval 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-Agent
kabi 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 tanlaydititle
head
Elements divs = document.select("body > div");
Teglarni div
ichkariga kiritingbody
Elements firstDiv = document.select("body > div:nth-child(1)");
div
ga 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 class
vaid
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, Elements
undan ma'lumotlarni olishimiz mumkin. Eslatib o'taman, odatda selektor bitta tegni qidiradi, ya'ni. Elements
hajmi 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
GO TO FULL VERSION