Сондықтан сайттан нақты ақпарат алғымыз келеді. Мұны қадам бойынша қалай жасау керектігін қарастырайық. Алдымен біз алуымыз керек
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
"тақырып" және "негізгі" сыныптары бар тегтерді алыңыз . Шығару: body
h1
<div>
Поиск вакансий
</div>
Элементтер әдістері Біз тізімді алғаннан кейін, Elements
одан деректерді шығарып аламыз. Еске сала кетейін, әдетте селектор бір тегті іздейді, яғни. Elements
өлшемі 1 болуы керек .
elements.size();
табылған тегтер саны
elements.get(0);
табылғандар тізімінен бірінші тегті алыңыз
elements.text();
тегке енгізілген мәтін
elements.attr("href");
"href" атрибут мәні
elements.outerHtml();
тегтің жолды көрінісі Егер сізге элемент таңдау құралын жылдам алу қажет болса, браузерде әзірлеуші тақтасын (f12) ашыңыз, элементті тінтуірдің оң жақ түймешігімен басыңыз, «codeты қарау», тегті тінтуірдің оң жақ түймешігімен басыңыз, содан кейін «Көшіру» « Көшіру таңдағышы». Мұндай селектор оңтайлы болмайды, бірақ ол жылдам нәтижелерге өте қолайлы. Қорытынды Бұл Jsoup кітапханасымен жұмыс істеу негіздері. Бірақ бұл сайттарды талдау үшін жеткілікті. Сенімді жұмыс істеу үшін сізге тек нақты сайттарда селекторларды жазуды жаттықтыру қажет. Ps Бұл кітапхана 38-деңгейдегі үлкен мәселені шешу үшін пайдаланылады
GO TO FULL VERSION