JavaRush /Java blogi /Random-UZ /Jsoup yordamida Java-da HTML faylni qanday tahlil qilishn...
Sdu
Daraja

Jsoup yordamida Java-da HTML faylni qanday tahlil qilishning 3 ta misoli

Guruhda nashr etilgan
Jsoup yordamida Java-da HTML faylni tahlil qilishning 3 ta misoli - 1HTML WEB ning o'zagi hisoblanadi, siz ko'rayotgan barcha Internet sahifalari, ular JavaScript, JSP, PHP, ASP yoki boshqa veb-texnologiyalar yordamida dinamik tarzda yaratilgan bo'ladimi, HTMLga asoslangan. Aslida, brauzeringiz HTMLni tahlil qiladi va uni siz uchun qulay bo'lgan tarzda ko'rsatadi. Agar siz HTML hujjatini tahlil qilishingiz va undagi biror element, teg, atributni topishingiz yoki Java dasturi yordamida ma'lum bir element mavjudligi yoki yo'qligini tekshirishingiz kerak bo'lsa-chi. Agar siz bir necha yil Java dasturchisi bo'lgan bo'lsangiz, ishonchim komilki, siz DOM yoki SAX kabi tahlilchilar yordamida XML tahlilini qilgan bo'lar edingiz. Ammo, ajablanarlisi shundaki, ba'zida siz HTML hujjatini Servletlar va boshqa Java veb-texnologiyalarini o'z ichiga olmaydigan asosiy Java ilovasidan tahlil qilishingiz kerak bo'ladi. Bundan tashqari, Core JDK ham HTTP yoki HTML kutubxonalarini o'z ichiga olmaydi. Shu sababli, HTML faylini tahlil qilish haqida gap ketganda, ko'plab Java dasturchilari Google'dan Java'da HTML tegining qiymatini qanday olish kerakligini so'rashadi. Men bunga duch kelganimda, yechim menga kerakli funksiyani amalga oshiradigan ochiq kodli kutubxona bo'lishiga amin bo'ldim, lekin bu Jsoup kabi ajoyib va ​​ko'p imkoniyatlarga ega bo'lishini bilmagandim. U nafaqat JQuery uslubidagi HTML fayllari, atributlari, CSS sinflarini o'qish va tahlil qilishni qo'llab-quvvatlaydi, balki ularni o'zgartirishga imkon beradi. Jsoup-dan foydalanib, HTML hujjati bilan xohlagan narsani qilishingiz mumkin. Ushbu maqolada biz HTML faylni tahlil qilamiz va teglarning nomlari va atributlarini topamiz. Shuningdek, biz fayldan va istalgan URL manzilidan, masalan, Google bosh sahifasidan HTMLni yuklab olish va tahlil qilish misollarini ko‘rib chiqamiz.

Jsoup nima

Jsoup haqiqiy HTML bilan ishlash uchun ochiq manbali Java kutubxonasidir. Bu eng yaxshi DOM, CSS va jQuery-ga o'xshash usullardan foydalangan holda ma'lumotlarni olish va manipulyatsiya qilish uchun juda qulay API taqdim etadi. Jsoup WHATWG HTML5 spetsifikatsiyasini amalga oshiradi va HTMLni Chrome va Firefox kabi zamonaviy brauzerlar kabi DOMga ajratadi. Jsoup kutubxonasining foydali xususiyatlaridan ba'zilari:
  • Jsoup URL, fayl yoki satrdan HTMLni qirqishi va tahlil qilishi mumkin.
  • Jsoup DOM traversal yoki CSS selektorlari yordamida ma'lumotlarni topishi va chiqarishi mumkin.
  • Jsoup sizga HTML elementlari, atributlari va matnlarini boshqarish imkonini beradi.
  • Jsoup XSS hujumlarining oldini olish uchun foydalanuvchi tomonidan taqdim etilgan ma'lumotlarni oq ro'yxatda tozalashni ta'minlaydi.
  • Jsoup, shuningdek, "toza" HTML ishlab chiqaradi.
Jsoup haqiqiy dunyoda mavjud bo'lgan turli xil HTML turlari, jumladan to'liq bo'lmagan, tasdiqlanmagan teglar to'plami bilan to'g'ri tasdiqlangan HTML bilan ishlash uchun mo'ljallangan. Jsoupning asosiy afzalliklaridan biri uning ishonchliligidir.

Jsoup yordamida Java'da HTMLni tahlil qilish

Ushbu qo'llanmada biz Jsoup yordamida Java-da HTML hujjatini tahlil qilish va o'tkazishning uchta turli misollarini ko'ramiz. Birinchi misolda biz Java string literal ko'rinishidagi teglarni o'z ichiga olgan HTML qatorini tahlil qilamiz. Ikkinchi misolda biz HTML hujjatimizni Internetdan yuklab olamiz, uchinchi misolda esa tahlil qilish uchun o'zimizning login.html namunaviy HTML faylimizni yuklab olamiz. Bu fayl HTML formasini o'z ichiga olgan "tana" bo'limidagi "title" tegi va "div" tegidan iborat namunaviy HTML hujjatidir. Shakl foydalanuvchi nomi va parolni kiritish uchun maydonlarni, shuningdek, keyingi harakatlar uchun tiklash va tasdiqlash tugmalarini o'z ichiga oladi. Bu "to'g'ri" HTML bo'lib, "haqiqiylik" tekshiruvidan o'tishi mumkin, ya'ni barcha teglar va atributlar to'g'ri yopilgan. Bizning HTML faylimiz shunday ko'rinadi:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Login Page</title>
    </head>
    <body>
        <div id="login" class="simple" >
            <form action="login.do">
                Username : <input id="username" type="text" /><br>
                Password : <input id="password" type="password" /><br>
                <input id="submit" type="submit" />
                <input id="reset" type="reset" />
            </form>
        </div>
    </body>
</html>
Jsoup yordamida HTMLni tahlil qilish juda oson, siz qilishingiz kerak bo'lgan yagona narsa statik usulni chaqirish Jsoup.parse()va HTML satringizni unga o'tkazish. Jsoup parse()HTMLni satrdan, fayldan, asosiy URI dan, URL dan va dan o'qish uchun bir nechta ortiqcha yuklangan usullarni taqdim etadi InputStream. HTML fayli UTF-8 formatida bo'lmasa, uni to'g'ri o'qish uchun kodlashni ham belgilashingiz mumkin. Usul parse(String html)kiruvchi HTMLni yangi ob'ektga ajratadi Document. Jsoup da sinf sinfni kengaytiruvchi Documentsinfdan meros oladi . Sinf ham sinfdan meros oladi . Usulga null bo'lmagan satrni o'tkazsangiz, (hech bo'lmaganda) "bosh" va "tana" elementlarini o'z ichiga olgan ob'ektni muvaffaqiyatli, mazmunli tahlil qilish kafolatlanadi. Agar ob'ekt bo'lsa , sinf va uning ota-onalari va tegishli usullarini chaqirib, kerakli ma'lumotlarni olishingiz mumkin . ElementNodeNodeTextNodeDocumentDocumentDocumentElementNode

HTML hujjatni tahlil qilish uchun Java dasturi

Bu yerda HTML satrini, internetdan yuklab olingan HTML faylni va mahalliy HTML faylni tahlil qilish uchun to'liq dasturimiz. Uni ishga tushirish uchun siz IDE (Eclipse yoki boshqa har qanday) yoki buyruq qatoridan foydalanishingiz mumkin. Eclipse-da bu juda oson, shunchaki ushbu kodni nusxalang, yangi Java loyihasini yarating, "src" papkasini o'ng tugmasini bosing va nusxalangan kodni joylashtiring. Eclipse tegishli nomga ega to'g'ri paket va manba kodi faylini yaratish bilan shug'ullanadi, shuning uchun bu juda kam ish. Agar sizda allaqachon Java loyihasi bo'lsa, bu faqat bir qadam. Quyidagi dastur HTML faylni tahlil qilish va o'tishning uchta misolini ko'rsatadi. Birinchi misolda biz to'g'ridan-to'g'ri HTML o'z ichiga olgan satrni tahlil qilamiz, ikkinchisida URL manzilidan yuklab olingan HTML faylni, uchinchisida biz mahalliy fayl tizimidan HTML hujjatini yuklab olamiz va tahlil qilamiz.
import java.io.File;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

/**
* Java Program to parse/read HTML documents from File using Jsoup library.
* Jsoup is an open source library which allows Java developer to parse HTML
* files and extract elements, manipulate data, change style using DOM, CSS and
* JQuery like method.
*
* @author Javin Paul
*/
public class HTMLParser{

    public static void main(String args[]) {

        // Parse HTML String using JSoup library
        String HTMLSTring = "<!DOCTYPE html>"
                + "<html>"
                + "<head>"
                + "<title>JSoup Example</title>"
                + "</head>"
                + "<body>"
                + "<table><tr><td><h1>HelloWorld</h1></tr>"
                + "</table>"
                + "</body>"
                + "</html>";

        Document html = Jsoup.parse(HTMLSTring);
        String title = html.title();
        String h1 = html.body().getElementsByTag("h1").text();

        System.out.println("Input HTML String to JSoup :" + HTMLSTring);
        System.out.println("After parsing, Title : " + title);
        System.out.println("Afte parsing, Heading : " + h1);

        // JSoup Example 2 - Reading HTML page from URL
        Document doc;
        try {
            doc = Jsoup.connect("http://google.com/").get();
            title = doc.title();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("Jsoup Can read HTML page from URL, title : " + title);

        // JSoup Example 3 - Parsing an HTML file in Java
        //Document htmlFile = Jsoup.parse("login.html", "ISO-8859-1"); // wrong
        Document htmlFile = null;
        try {
            htmlFile = Jsoup.parse(new File("login.html"), "ISO-8859-1");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } // right
        title = htmlFile.title();
        Element div = htmlFile.getElementById("login");
        String cssClass = div.className(); // getting class form HTML element

        System.out.println("Jsoup can also parse HTML file directly");
        System.out.println("title : " + title);
        System.out.println("class of div tag : " + cssClass);
    }
}
Chiqish:
Input HTML String to JSoup :<!DOCTYPE html><html><head><title>JSoup Example</title></head><body><table><tr><td><h1>HelloWorld</h1></tr></table></body></html>
After parsing, Title : JSoup Example
Afte parsing, Heading : HelloWorld
Jsoup Can read HTML page from URL, title : Google
Jsoup can also parse HTML file directly
title : Login Page
class of div tag : simple
Jsoup HTML tahlilchisi siz taqdim etgan HTMLning "toza" tahlilini yaratish uchun barcha sa'y-harakatlarni amalga oshiradi, u yaxshi shakllanganmi yoki yo'qmi. U quyidagi xatolarni hal qilishi mumkin:
  • yopilmagan teglar. Masalan,<p>Java <p>Scala to <p>Java</p> <p>Scala</p>
  • nazarda tutilgan teglar. Misol uchun, ochiq bo'lganlar <td>Java is Great</td>o'raladi<table><tr><td>
  • Jsoup mustahkam hujjat tuzilmalarini yaratadi (HTML bosh va tanani o'z ichiga oladi, lekin tanada faqat tegishli elementlar mavjud)
Jsoup mukammal va ishonchli ochiq manbali kutubxona bo'lib, html hujjatini, tana qismlarini, html satrlarini o'qish va HTML veb-kontentini to'g'ridan-to'g'ri tahlil qilishni juda oddiy qiladi.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION