JavaRush /Java Blog /Random-TK /Jsoup bilen aňsat HTML derňewi
Stanislav
Dereje
Москва

Jsoup bilen aňsat HTML derňewi

Toparda çap edildi
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

DocumentIlki 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 Agentgirilýän sahypa habar berilýän kesgitleýji. Köp saýtlarda antispam süzgüji üçin iň möhüm ölçegdir. Referrerhaý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 divnusga almak üçin ulanjak görkezilen synpymyz bilen blok alýarys. Saýlanan blokymyzdan ähli elementleri saýlamak üçin org.jsoup.select.Elements-den Jsoup ulanyp, aňsat HTML derňewi - 1synpy 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: Jsoup - 2 ulanyp, aňsat HTML derňewiIndi 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: Jsoup - 3 ulanyp, aňsat HTML derňewiAlnan 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());

Netije

Bu mysal, jsoup-yň nämäniň ukyplydygyny görkezýär. Sahypalaryň köplenç täzelenýändigi, bellik kodunyň gurluşyny üýtgedýändigi hem bar, şonuň üçin döwmek bilen işlän wagtyňyz üýtgeşmelere uýgunlaşmaga taýyn bolmaly. Has giňişleýin maglumaty we häzirki wersiýasyny jsoup.org resmi web sahypasynda alyp bilersiňiz ; sapaklar we usullar barada has giňişleýin o7planning.org baglanyşygyndan okap bilersiňiz . Github- a baglanyşyk goýaryn , ýazylanda maglumat almak we görkezmek üçin Jsoup-dan peýdalanýan birnäçe Telegram botlary bar.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION