به نام خدا
در این پست می خوام به معرفی کتابخانه بسیار خوب و قدرتمند jsoup بپردازم و با مثال هایی نحوه استفاده از اون رو نشون بدم، پس با من همراه باشید
jsoup چیست؟
کتابخانه jsoup در جاوا، کتابخانه ی قدرتمندیست و دارای متد ها و کلاس های زیادی هست که برای آنالیز و تجزیه و تحلیل و استخراج اطلاعات مورد نیاز از سورس صفحات HTML به کار می رود. برای مثال، فرض کنید که شما سورس یک صفحه Html رو دارید به شکل زیر:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>10.10.34.34</title>
</head>
<body>
<div class="items">
<ul>
<li><a href="http://www.google.com">برو به گوگل</a></li>
<li><a href="http://www.facebook.com">برو به فیسبوک</a></li>
<li><a href="http://www.gmail.com">برو به جیمل</a></li>
<li><a href="http://www.twitter.com">برو به توییتر</a></li>
</ul>
</div>
<div class="portfolio-item pi8">
<h3 style="background-position: center -610px;"></h3>
<ul style="color:#804e29;">
<li><a href="http://peyvandha.ir/8-2.htm">بورس و سرمایه گذاری</a></li>
<li><a href="http://peyvandha.ir/8-3.htm">فروشگاه اینترنتی</a></li>
<li><a href="http://peyvandha.ir/8-3.htm">کامپیوتر و تلفن همراه</a></li>
<li><a href="http://peyvandha.ir/8-4.htm">تجارت و خدمات </a></li>
<li><a href="http://peyvandha.ir/8-4.htm">تبلیغات و نیازمندی ها </a></li>
<li><a href="http://peyvandha.ir/8-5.htm">اشتغال و کارآفرینی </a></li>
<li><a href="http://peyvandha.ir/8-6.htm">تولیدی و صنعتی </a></li>
<li><a href="http://peyvandha.ir/8-6.htm">صنایع خودرو</a></li>
<li><a href="http://peyvandha.ir/8-7.htm">حمل و نقل </a></li>
</ul>
</div>
</body>
</html>
و می خوهید که:
تمام لینک ها را از این سورس html استخراج کنید
و یا می خواهید تمام اطلاعاتی که داخل تگ body قرار دارند رو بدست بیاورید
و یا اینکه تمام تگ های h3 که در داخل تگ div قرار دارند رو استخراج کنید
و خلاصه اینکه هر کاری که دلتون بخواد رو میتونید با این کتابخانه و متد های اون انجام بدید.
در نگاه اول شاید فکر کنید که این کار ساده ای هست و با استفاده از regex expression خودتون می تونید اینکار رو انجام بدید، بله میشه، ولی وقت می بره، پس بهتره که در وقتتون صرفه جویی کنید و با استفاده از این کتاب خانه و متد های اون به راحتی و با سرعت بالا اینکار رو انجام بدید.
نحوه اضافه کردن این لایببری به پروژه:
اگه از maven برای ساخت پروژه استفاده میکنید، کافیه چند خط زیر رو به فایل pom اضافه کنید تا میون خودش لایبرری رو دانلود و به پروژتون اضافه کنه (در غیر این صورت، باید برید سایت https://jsoup.org و بصورت دستی لایبرری رو دانلود کنید و به پروژتون اضافه کنید)
<dependency>
<!-- jsoup HTML parser library @ https://jsoup.org/ -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
مثال ها:
خب بریم سراغ مثال ها و نحوه ی استفاده از این لایببری. من یه فایل متنی توی پوشه ی home درست کردم و اون سورس HTML که در بالا گذاشتم رو داخل فایل متنی ذخیره کردم. تمام مثال ها رو روی اون فایل متنی اجرا خواهم کرد.
مثال اول:
استخراج تمام لینک های موجود در سورس بالا:
import java.io.File;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) {
try {
File f = new File("/home/farhad/html");
Document doc = Jsoup.parse(f, "utf-8");
Elements elements = doc.getElementsByTag("a");
for (Element element : elements) {
System.out.println(element.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
خروجی
<a href="http://www.google.com">برو به گوگل</a>
<a href="http://www.facebook.com">برو به فیسبوک</a>
<a href="http://www.gmail.com">برو به جیمل</a>
<a href="http://www.twitter.com">برو به توییتر</a>
<a href="http://peyvandha.ir/8-2.htm">بورس و سرمایه گذاری</a>
<a href="http://peyvandha.ir/8-3.htm">فروشگاه اینترنتی</a>
<a href="http://peyvandha.ir/8-3.htm">کامپیوتر و تلفن همراه</a>
<a href="http://peyvandha.ir/8-4.htm">تجارت و خدمات </a>
<a href="http://peyvandha.ir/8-4.htm">تبلیغات و نیازمندی ها </a>
<a href="http://peyvandha.ir/8-5.htm">اشتغال و کارآفرینی </a>
<a href="http://peyvandha.ir/8-6.htm">تولیدی و صنعتی </a>
<a href="http://peyvandha.ir/8-6.htm">صنایع خودرو</a>
<a href="http://peyvandha.ir/8-7.htm">حمل و نقل </a>
همونطور که میبینید تمام لینک های موجود در سورس استخراج شدن.
مثال دوم:
استخراج تمام لینک های موجود در المنت <div> که کلاس ان items میباشد:
import java.io.File;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) {
try {
File f = new File("/home/farhad/html");
Document doc = Jsoup.parse(f, "utf-8");
Elements elements = doc.getElementsByClass("items");
for (Element element : elements) {
System.out.println(element.getElementsByTag("a"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
خروجی
<a href="http://www.google.com">برو به گوگل</a>
<a href="http://www.facebook.com">برو به فیسبوک</a>
<a href="http://www.gmail.com">برو به جیمل</a>
<a href="http://www.twitter.com">برو به توییتر</a>
این بار فقط لینک های موجود در داخل المنت <div> که کلاس آن items میباشد استخراج شده.
همونطور که میبینید، کتابخانه ی jsoup بسیار بسیار قدرتمند هست و باهاش تقریبا هر قسمت از سورس یک صفحه ی html رو که بخواید میتونید استخراج کنید.امیدوارم این مطلب به درد شما خوره باشه :)