Belki, bir gün arzaňyzda web sahypasyndan ýa-da HTML resminamasyndan maglumat almaly bolarsyňyz, jsoup kitaphanasyny ulanmak işiňizi ep-esli aňsatlaşdyrar. Wikiniň pikiriçe , jsoup açyk çeşme Java kitaphanasy bolup, HTML resminamalarynda saklanýan maglumatlary derňemek, çykarmak we dolandyrmak üçin niýetlenendir.
Çalt başlangyç
Kitaphanany banka faýly hökmünde göçürip alyp, taslama ýerleşdirip ýa-da Maven / Gradle ulanyp birikdirip bolýar. Makalanyň ahyrynda resmi web sahypasyna baglanyşyk goýaryn: şol ýerde kitaphananyň häzirki wersiýasyny tapyp bilersiňiz. Mysal üçin, Maven arkaly birikmäni ulanarys. Garaşlylygy goşalyň:<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
Ulanylyşy
Document
Ilki bilen, synpyň mysalyny org.jsoup.nodes.Document-den almagyň çeşmesini görkezýän resminama almaly . Localerli faýl ýa-da baglanyşyk bolup biler. Mysal üçin, bu makalada yandex.ru web sahypasyny ulanarys we häzirki täzeliklerini almaga synanyşarys:
Document doc = Jsoup.connect("https://yandex.ru/")
.userAgent("Chrome/4.0.249.0 Safari/532.5")
.referrer("http://www.google.com")
.get();
User Agent
girilýän sahypa habar berilýän kesgitleýji. Köp saýtlarda antispam süzgüji üçin iň möhüm ölçegdir. Referrer
haýyş çeşmesiniň URL-ni öz içine alýar. Usul get()
dolandyrylýan IOException-y zyňýar, şonuň üçin hemme zady bir blokda örtüp bileris try/catch
ýa-da başga ýere zyňyp bileris throws
. Indi bu sahypa üçin deslapky kody aldyk. Zerur bolsa, jsoup kitaphanasynyň özi zeper ýeten elementleri dikeldip biler. Indi etmeli zadymyz, gözlegi aýratyn blokda çäklendirmek. Usulda select()
köp ulanylyşy bar: bellik, atributlar, synp we beýleki parametrler boýunça elementleri gözlemäge mümkinçilik berýär. Döwrebap brauzerleriň hemmesi diýen ýaly saýlanan elementiň deslapky koduny çalt gözlemek ukybyny goldaýar. Simpleönekeý manipulýasiýa bilen, zerur elementiň deslapky koduny tapýarys we div
nusga almak üçin ulanjak görkezilen synpymyz bilen blok alýarys. Saýlanan blokymyzdan ähli elementleri saýlamak üçin org.jsoup.select.Elements-den synpy ulanalyň .Elements
Elements listNews = doc.select("div#tabnews_newsc.content-tabs__items.content-tabs__items_active_true");
Indi şuňa meňzeş bir zat bar: Indi etmeli zadymyz, ähli elementleri gaýtalamak üçin kiçijik aýlawdan peýdalanmak:
for (Element element : listNews.select("a"))
System.out.println(element.text());
Bu usul, text()
bellik koduny taşlamaga mümkinçilik berýär we ähli gelýän elementler üçin diňe tekstiň kombinasiýasyny goýýar. Executionerine ýetirişiň netijesi şeýle bolar: Alnan hatarlaryň sanynyň sahypadaky hakyky ekrana laýyk gelmeýändigini görmek aňsat. Bu ýerde duzaklar ýatyr. Bellikiň deslapky kodyna seretseňiz, soňky habarlaryň belli bir wagt aralygynda janly üýtgeýändigini görersiňiz. Bu “daşlaryň” käbiri goşmaça synaglar we elbetde synaglar arkaly çözülýär. Ilkinji bäş elementiň bize zerur maglumatlary, altynjy elementde bolsa diňe ýazylan boş setiriň bolmagy mümkin. Şeýle hem, bloklarda kesgitleýjiniň bolmazlygy ýüze çykýar, soň usul bilen get(int index)
sorag edilýän elementiň ýerleşiş belgisine gönüden-göni görkezip bolýar.
System.out.println(listNews.select("a").get(2).text());
GO TO FULL VERSION