Аз ин рӯ, мо мехоҳем аз сайт маълумоти мушаххас гирем. Биёед бубинем, ки чӣ тавр ин корро зина ба зина анҷом дод. Аввал ба мо лозим аст, ки
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 истифода мешавад
GO TO FULL VERSION