آموزش کتابخانه Jsoup در اندروید
سلام دوستان همیشگی در این قسمت از آموزش برنامه نویسی اندروید به آموزش کتابخانه Jsoup در اندروید می پردازیم شاید بپرسید Jsoup چیست ؟ در یک کلام می توان گفت Jsoup کتابخانه است که عمل Parse یا تجزیه مربوط به Html را انجام میدهد در ادامه با همراه باشید تا بیشتر با این کتابخانه آشنا شوید.
Jsoup چیست ؟
یک کتابخانه است که برپایه ی جاوا به منظور parse , Manipulate , extract داده در html استفاده می شود و رایگان است و دارای ویژگی CSS selectors برای استخراج DOM در html5 است.
ویژگی ها :
- scrape و پارس html از url یا String یا file
- پشتیبانی از CSS selectors و DOM traversal
- دستکاری در تگ های Html
Jsoup در اندروید
نحوه استفاده از این کتابخانه چگونه است ؟
اول اینکه کتابخانه زیر را در گریدل قرار داده و sync کنید.
1 | implementation 'org.jsoup:jsoup:1.11.1' |
یا اینکه راه دوم رو برید
راه دوم اینکه این کتابخانه را از وب سایت رسمی دانلود کنید
1 | https://jsoup.org/download |
فایل jar را از پوشه zip اکسترکت کرده و در داخل پوشه libs مربوط به اندروید استودیو قرار دهید
سپس روی فایل jsoup کلیک راست کرده و add as library را از انتهای لیست انتخاب کنید.
منتظر sync بمانید.
دسترسی مربوط به اینترنت را فراموش نکنید در AndroidManifest.xml
1 2 | <uses-permission android:name="android.permission.INTERNET"> </uses-permission> |
برای اتصال به یک وب سایت و دریافت html آن می توانید از کد زیر استفاده کنید.
1 2 3 4 5 6 7 | Document doc = Jsoup.connect("https://en.wikipedia.org/").get(); log(doc.title()); Elements newsHeadlines = doc.select("#mp-itn b a"); for (Element headline : newsHeadlines) { log("%s\n\t%s", headline.attr("title"), headline.absUrl("href")); } |
در ادامه یک کد Sample برای شما قرار خواهیم داد.
layout ما داری کد های زیر است.
1 | <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.princess.jsoup.MainActivity" >="" <imageview="" android:id="@+id/image" android:layout_centerhorizontal="true" android:layout_margintop="30dp" <textview="" android:textsize="30sp" android:layout_below="@id/image" android:layout_margin="30dp" <relativelayout=""> </relativelayout> |
یک عکس و متن از سرویس فایربیس دریافت شده و در بالا قرار خواهد گرفت اگر بخواهیم عمل request زدن به سمت سرور بدون مشغول کردن ترد اصلی انجام شود باید از Asynctask استفاده کنیم.
view های بالا را در اکتیویتی find کنید.
در اکتیویتی خود کد زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | private class Content extends AsyncTask<;Void, Void, Void>; { @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = new ProgressDialog(MainActivity.this); progressDialog.show(); } @Override protected Void doInBackground(Void... voids) { try { //Connect to the website Document document = Jsoup.connect(url).get(); //Get the logo source of the website Element img = document.select("img").first(); // Locate the src attribute String imgSrc = img.absUrl("src"); // Download image from URL InputStream input = new java.net.URL(imgSrc).openStream(); // Decode Bitmap bitmap = BitmapFactory.decodeStream(input); //Get the title of the website title = document.title(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); imageView.setImageBitmap(bitmap); textView.setText(title); progressDialog.dismiss(); } } |
کد بالا کل سورس سایت firebase را دریافت کرده و به دنبال دو id می گردد و آنها را پیدا کرده و در نهایت در View های مرتبط قرار میدهد.
برای اینکه request زده بشه باید AysncTask را همانند زیر در oncreate اجرا کنید.
1 2 | Connect myTask = new Connect(); myTask.execute(); |
موفق و پیروز باشید.