JavaRush /وبلاگ جاوا /Random-FA /تجزیه html با کتابخانه jsoup
Сергей
مرحله
Москва

تجزیه html با کتابخانه jsoup

در گروه منتشر شد
بنابراین می خواهیم اطلاعات خاصی را از سایت دریافت کنیم. بیایید نحوه انجام این کار را مرحله به مرحله بررسی کنیم. تجزیه html با کتابخانه jsoup - 1ابتدا باید آن را دریافت کنیم Document. این نمایشی از صفحه html ما است. Jsoup چندین راه برای تبدیل یک سایت به یک دارد Document. به سرور متصل شوید
Document document = Jsoup.connect("https://hh.ru/").get();
Jsoup خود به سایت متصل می شود. این روش ساده ترین است، اما فقط برای آزمایش مناسب است. کلاینت های http راحت تر و انعطاف پذیرتری وجود دارد. همچنین به خاطر داشته باشید که مهم نیست از چه سرویس گیرنده http استفاده می کنید، یک هدر به درخواست User-Agentبا مقداری مانند Chrome/81.0.4044.138. با استفاده از این هدر، سرور تعیین می کند که از کدام دستگاه وصل شده اید. بدون این هدر، سرور شما را یک ربات می داند و ممکن است شما را تحریم کند. از فایل ؛
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
این راه اصلی برای به دست آوردن یک شی است Document. آخرین آرگومان "hh.ru"URI پایه است. این برای ایجاد پیوندهای مطلق از پیوندهای نسبی موجود در سایت ضروری است. از خط
String html =
                "<html>                                                                       " +
                "    <head>                                                                   " +
                "        <title href=\"hh.ru/vacancy?home\">                                  " +
                "            Работа в Москве, поиск персонала и публикация вакансий - hh.ru   " +
                "        </title>                                                             " +
                "    </head>                                                                  " +
                "    <body>                                                                   " +
                "        <div class=\"header main\">                                          " +
                "            <h1>Работа найдется для каждого</h1>                             " +
                "            <div>Поиск вакансий</div>                                        " +
                "        </div>                                                               " +
                "        <div class=\"content\">                                              " +
                "            <div>Вакансии дня</div>                                          " +
                "            <div id=\"123\">Компании дня</div>                               " +
                "            <div>Работа из дома</div>                                        " +
                "        </div>                                                               " +
                "    </body>                                                                  " +
                "</html>                                                                      ";

        Document document = Jsoup.parse(html, "hh.ru");
در مرحله بعد، کتابخانه را در این html نشان خواهم داد که یک سایت ساده شده را نشان می دهد. گرفتن تگ وظیفه اصلی هنگام تجزیه، بدست آوردن تگ مورد نظر است. ما این کار را با استفاده از روش انجام خواهیم داد select. توجه داشته باشید که همیشه لیستی از برچسب ها را برمی گرداند. اگر هیچ برچسبی پیدا نشد، لیست خالی خواهد بود. شما باید یک انتخابگر CSS را ارسال کنید که توسط آن تگ ها به عنوان آرگومان متد جستجو می شوند. من در مورد انتخابگرها با جزئیات بیشتری صحبت خواهم کرد، زیرا تمام کار به نوشتن انتخابگر صحیح خلاصه می شود. معمولاً باید آن را طوری بنویسیم که یک تگ را برگرداند.
Elements h1 = document.select("h1");
System.out.println(h1);
دریافت برچسب‌ها h1 خروجی:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
برچسب ها را دریافت کنید title. علامت تگ های تو در تو در یک تگ >را انتخاب می کندtitlehead
Elements divs = document.select("body > div");
برچسب‌ها را divدر تودرتو دریافت کنیدbody
Elements firstDiv = document.select("body > div:nth-child(1)");
اولین برچسب divتو در تو را دریافت کنید body. بازیابی برچسب با شماره سریال راه بدی است، زیرا ممکن است موقعیت آن در سایت تغییر کند. بهتر است تگ را با استفاده از پارامترهای مطلق تعریف کنید. این پارامترها صفات classوid
Elements contentElem = document.select("body > div.content");
یک برچسب divبا کلاس "محتوا"، تو در تو دریافت کنیدbody
Elements idElem = document.select("#123");
دریافت برچسب با شناسه "123"
Elements divHeader = document.select("body > div.header.main :not(h1)");
برچسب هایی را divبا کلاس "header" و "main" دریافت کنید، تو در تو body، اما بدون برچسب h1 . خروجی:

<div>
 Поиск вакансий
</div>
عناصر روش پس از دریافت لیست، Elementsمی توانیم داده ها را از آن استخراج کنیم. اجازه دهید یادآوری کنم که معمولاً انتخابگر یک تگ را جستجو می کند. باید Elementsسایز 1 باشه
elements.size();
تعداد برچسب های یافت شده
elements.get(0);
اولین برچسب را از لیست موارد یافت شده دریافت کنید
elements.text();
متن تعبیه شده در تگ
elements.attr("href");
مقدار ویژگی "href".
elements.outerHtml();
نمایش رشته یک تگ اگر می خواهید سریع انتخابگر عنصر را دریافت کنید، پانل توسعه دهنده (f12) را در مرورگر باز کنید، روی عنصر کلیک راست کنید، "مشاهده کد"، روی برچسب راست کلیک کنید، سپس "کپی" را کلیک کنید. انتخابگر کپی». چنین انتخابگر بهینه نخواهد بود، اما برای نتایج سریع کاملاً مناسب است. نتیجه گیری این اصول کار با کتابخانه Jsoup است. اما این برای تجزیه سایت ها کاملاً کافی است. برای کار با اطمینان، تنها چیزی که نیاز دارید تمرین نوشتن انتخابگرها در سایت های واقعی است. Ps این کتابخانه برای حل یک مشکل بزرگ در سطح 38 استفاده می شود تجزیه html با کتابخانه jsoup - 1تجزیه html با کتابخانه jsoup - 3
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION