شايد ڪنهن ڏينهن توهان کي پنهنجي اپليڪيشن ۾ ڪنهن ويب سائيٽ يا HTML دستاويزن کان معلومات حاصل ڪرڻ جي ضرورت پوندي، ۽ مان بغير ڪنهن اشتهار جي چوندس ته jsoup لائبريري استعمال ڪرڻ توهان جي ڪم کي تمام گهڻو آسان بڻائي ڇڏيندو. wiki جي مطابق ، jsoup هڪ اوپن سورس جاوا لائبريري آهي جيڪا HTML دستاويزن ۾ محفوظ ڪيل ڊيٽا کي پارس ڪرڻ، ڪڍڻ ۽ ان کي ترتيب ڏيڻ لاءِ ٺهيل آهي.
تيز شروعات
لائبريري کي جار فائل جي طور تي ڊائون لوڊ ڪري سگھجي ٿو ۽ ھڪڙي منصوبي ۾ رکيل آھي، يا Maven/Gradle استعمال ڪندي ڳنڍيل آھي. آئون آرٽيڪل جي آخر ۾ سرڪاري ويب سائيٽ ڏانهن هڪ لنڪ ڇڏيندس: اتي توهان لائبريري جو موجوده نسخو ڳولي سگهو ٿا. مثال ۾ اسان استعمال ڪنداسين ڪنيڪشن Maven ذريعي. اچو ته هڪ انحصار شامل ڪريو:<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
استعمال
سڀ کان پهريان، توهان کي org.jsoup.nodes.Document مان ڪلاس جو هڪ مثال حاصل ڪرڻ جي ضرورت آهي جيڪوDocument
parsing لاءِ ذريعو ظاهر ڪري ٿو. اهو يا ته مقامي فائل يا لنڪ ٿي سگهي ٿو. مثال طور، هن آرٽيڪل ۾ اسان ويب سائيٽ yandex.ru استعمال ڪنداسين ۽ انهن جي موجوده نيوز فيڊ حاصل ڪرڻ جي ڪوشش ڪنداسين:
Document doc = Jsoup.connect("https://yandex.ru/")
.userAgent("Chrome/4.0.249.0 Safari/532.5")
.referrer("http://www.google.com")
.get();
User Agent
هڪ سڃاڻپ ڪندڙ آهي جنهن کي ٻڌايو ويو آهي سائيٽ جو دورو ڪيو پيو وڃي. ڪيترن ئي سائيٽن تي اهو سڀ کان اهم معيار آهي اينٽي اسپام فلٽر لاءِ. Referrer
درخواست جي ماخذ جي URL تي مشتمل آهي. اهو طريقو هڪ قابل استعمال IOException اڇلائي ٿو، تنهنڪري اسان هر شي کي بلاڪ get()
۾ لپي سگهون ٿا ، يا صرف ان کي اڳتي وڌايو . اسان کي هن صفحي لاء ذريعو ڪوڊ مليو آهي. جيڪڏهن ضروري هجي ته، jsoup لائبريري پاڻ خراب ٿيل عناصر کي بحال ڪري سگهي ٿي. هاڻي اسان کي اهو ڪرڻو آهي ته ڳولا کي هڪ الڳ بلاڪ تائين محدود ڪيو وڃي. طريقو استعمال جو هڪ وڏو انتخاب آهي: اهو توهان کي ٽيگ، خاصيتون، ڪلاس ۽ ٻين پيٽرولن ذريعي عناصر ڳولڻ جي اجازت ڏئي ٿو. لڳ ڀڳ سڀني جديد برائوزرن کي هڪ چونڊيل عنصر جي ماخذ ڪوڊ کي جلدي ڳولڻ جي صلاحيت جي حمايت ڪن ٿا. سادي ٺاهه سان، اسان عنصر جو سورس ڪوڊ ڳوليندا آهيون جنهن جي اسان کي ضرورت آهي ۽ مخصوص طبقي سان هڪ بلاڪ حاصل ڪريون ٿا، جيڪو اسان نموني لاءِ استعمال ڪنداسين. اچو ته org.jsoup.select.Elements مان ڪلاس استعمال ڪريون اسان جي چونڊيل بلاڪ مان سڀئي عنصر چونڊڻ لاءِ. try/catch
throws
select()
div
Elements
Elements listNews = doc.select("div#tabnews_newsc.content-tabs__items.content-tabs__items_active_true");
ھاڻي اسان وٽ ڪجھ ھن طرح آھي: ھاڻي اسان کي اھو ڪرڻو آھي ھڪڙو ننڍڙو لوپ استعمال ڪرڻ لاءِ سڀني عنصرن جي ذريعي.
for (Element element : listNews.select("a"))
System.out.println(element.text());
طريقو text()
توهان کي مارڪ اپ ڪوڊ کي رد ڪرڻ جي اجازت ڏئي ٿو ۽ صرف سڀني ايندڙ عناصر لاء متن جو هڪ ميلاپ ڇڏي ٿو. عمل جو نتيجو هن ريت ٿيندو: اهو نوٽ ڪرڻ آسان آهي ته حاصل ڪيل قطارن جو اصل تعداد صفحي تي اصل ڊسپلي سان مطابقت نٿو رکي. اهو آهي جتي خرابيون ڪوڙ. جيڪڏهن توهان مارڪ اپ جي سورس ڪوڊ تي نظر وجهندا، توهان ڏسندا ته تازيون خبرون متحرڪ طور تي هڪ خاص وقت جي وقفي تي تبديل ٿينديون آهن. انهن مان ڪجهه "پٿر" اضافي نموني سان حل ڪيا ويا آهن، ۽ يقينا، ٽيسٽ. اهو ٿي سگهي ٿو ته پهرين پنج عنصرن ۾ معلومات هوندي جيڪا اسان کي گهربل هوندي، ۽ ڇهين عنصر ۾ صرف هڪ اسڪرپٽ ٿيل خالي لائن هوندي. اهو پڻ ٿئي ٿو ته بلاڪ کي ڪو به سڃاڻپ ڪندڙ نه هوندو، پوء اهو ممڪن آهي ته سڌو طريقي سان استعمال ڪندي get(int index)
سوال ۾ عنصر جي پوزيشن نمبر ڏانهن اشارو ڪيو وڃي.
System.out.println(listNews.select("a").get(2).text());
GO TO FULL VERSION