Андыктан биз сайттан конкреттүү маалымат алгыбыз келет. Келгиле, муну этап-этабы менен кантип жасоону карап көрөлү. Биринчиден, биз алышыбыз керек
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
. Белги тегдин ичинде уя салынган >
тэгдерди тандайтtitle
head
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
"header" жана "main" класстары менен тегдерди алыңыз , ичинде уя салынган body
, бирок тегдери жок h1
. Чыгуу:
<div>
Поиск вакансий
</div>
Элементтердин ыкмалары Биз тизмени алгандан кийин, Elements
андан маалыматтарды чыгара алабыз. Эске сала кетейин, көбүнчө селектор бир тегди издейт, б.а. Elements
өлчөмү 1 болушу керек .
elements.size();
табылган тегдердин саны
elements.get(0);
табылгандардын тизмесинен биринчи тэгди алуу
elements.text();
тегге киргизилген текст
elements.attr("href");
"href" атрибут мааниси
elements.outerHtml();
Tagдин сап чагылдырылышы Эгер сиз элемент тандагычты тез алуу керек болсо, браузерде иштеп чыгуучу панелди (f12) ачып, элементти оң баскыч менен чыкылдатып, "codeду көрүү", тегди оң баскыч менен чыкылдатып, андан кийин "Көчүрүү" " Көчүрмө тандагыч». Мындай селектор оптималдуу болбойт, бирок ал тез натыйжа үчүн абдан ылайыктуу болуп саналат. Корутунду Бул Jsoup китепканасы менен иштөөнүн негиздери. Бирок бул сайттарды талдоо үчүн жетиштүү. Ишенимдүү иштөө үчүн сизге чыныгы сайттарда селекторлорду жазуу боюнча машыгуу керек. Ps Бул китепкана 38-деңгээлдеги чоң маселени чечүү үчүн колдонулат
GO TO FULL VERSION