Mbok menawa ing sawijining dina sampeyan kudu entuk informasi saka situs web utawa dokumen HTML ing aplikasi sampeyan, lan aku ora bakal ngomong yen nggunakake perpustakaan jsoup bakal nyederhanakake tugas sampeyan. Miturut wiki , jsoup minangka perpustakaan Java open source sing dirancang kanggo ngurai, ngekstrak lan manipulasi data sing disimpen ing dokumen HTML.
wiwitan cepet
Perpustakaan bisa diundhuh minangka file jar lan diselehake ing project, utawa disambungake nggunakake Maven / Gradle. Aku bakal ninggalake link menyang situs resmi ing mburi artikel: ana sampeyan bisa nemokake versi saiki perpustakaan. Ing conto kita bakal nggunakake sambungan liwat Maven. Ayo nambah ketergantungan:<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
Panggunaan
Kaping pisanan, sampeyan kudu entuk conto kelasDocument
saka org.jsoup.nodes.Document sing nuduhake sumber kanggo parsing. Bisa uga file lokal utawa link. Contone, ing artikel iki, kita bakal nggunakake situs web yandex.ru lan nyoba entuk feed warta saiki:
Document doc = Jsoup.connect("https://yandex.ru/")
.userAgent("Chrome/4.0.249.0 Safari/532.5")
.referrer("http://www.google.com")
.get();
User Agent
minangka pengenal sing disampekake menyang situs sing dibukak. Ing pirang-pirang situs, iku minangka kritéria paling penting kanggo panyaring antispam. Referrer
ngemot URL sumber panyuwunan. Cara get()
mbalang IOException ditangani, supaya kita bisa Lebokake kabeh ing try/catch
pemblokiran, utawa mung uncalan luwih karo throws
. Saiki kita wis nampa kode sumber kanggo kaca iki. Yen perlu, perpustakaan jsoup dhewe bisa mulihake unsur sing rusak. Saiki sing kudu ditindakake yaiku mbatesi telusuran menyang blok sing kapisah. Cara kasebut select()
nduweni pilihan akeh panggunaan: ngidini sampeyan nggoleki unsur kanthi tag, atribut, kelas lan paramèter liyane. Meh kabeh browser modern ndhukung kemampuan kanggo cepet nggoleki kode sumber saka unsur sing dipilih. Kanthi manipulasi prasaja, kita nemokake kode sumber unsur sing kita butuhake lan entuk div
blok karo kelas sing ditemtokake, sing bakal digunakake kanggo sampling. Ayo nggunakake kelas Elements
saka org.jsoup.select.Elements kanggo milih kabeh unsur saka blok sing dipilih.
Elements listNews = doc.select("div#tabnews_newsc.content-tabs__items.content-tabs__items_active_true");
Saiki kita duwe kaya iki: Saiki sing kudu ditindakake yaiku nggunakake daur ulang cilik kanggo ngulang kabeh unsur:
for (Element element : listNews.select("a"))
System.out.println(element.text());
Cara kasebut text()
ngidini sampeyan ngilangi kode markup lan mung ninggalake kombinasi teks kanggo kabeh unsur sing mlebu. Asil saka eksekusi bakal kaya ing ngisor iki: Iku gampang kanggo sok dong mirsani sing nomer nyata saka larik ditampa ora cocog karo tampilan nyata ing kaca. Iki ngendi pitfalls dumunung. Yen sampeyan ndeleng kode sumber markup, sampeyan bakal weruh manawa warta paling anyar diganti kanthi animasi ing interval wektu tartamtu. Sawetara "watu" iki ditanggulangi kanthi sampling tambahan, lan mesthi, tes. Bisa uga ana limang unsur pisanan ngemot informasi sing dibutuhake, lan unsur kaping enem mung ngemot baris kosong sing ditulis. Iku uga mengkono sing pamblokiran ora bakal duwe pengenal sembarang, banjur bisa langsung nunjuk nggunakake cara get(int index)
kanggo nomer posisi unsur ing pitakonan.
System.out.println(listNews.select("a").get(2).text());
GO TO FULL VERSION