لینوکس، عشق، برنامه نویسی

لینوکس، عشق، برنامه نویسی

در این وبلاگ مطالبی درباره سیستم عامل لینوکس و همچنین درمورد برنامه نویسی و کامپیوتر مینویسم.

يكشنبه, ۱ اسفند ۱۳۹۵، ۱۱:۳۸ ب.ظ

به نام خدا

 

 

در این پست می خوام به معرفی کتابخانه بسیار خوب و قدرتمند 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 رو که بخواید میتونید استخراج کنید.امیدوارم این مطلب به درد شما خوره باشه :)

 

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی