JavaRush /בלוג Java /Random-HE /ניתוח 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. השלט >בוחר תגים titleהמקוננים בתוך תגhead
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. אבל זה מספיק כדי לנתח אתרים. כדי לעבוד בביטחון, כל מה שאתה צריך הוא לתרגל כתיבת בוררים באתרים אמיתיים. נ.ב ספרייה זו משמשת לפתרון בעיה גדולה ברמה 38 ניתוח HTML עם ספריית jsoup - 1ניתוח HTML עם ספריית jsoup - 3
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION