JavaRush /Blog Java /Random-MS /Menghuraikan html dengan perpustakaan jsoup
Сергей
Tahap
Москва

Menghuraikan html dengan perpustakaan jsoup

Diterbitkan dalam kumpulan
Jadi kami ingin mendapatkan maklumat khusus daripada tapak tersebut. Mari lihat bagaimana untuk melakukan langkah demi langkah ini. Menghuraikan html dengan perpustakaan jsoup - 1Mula-mula kita perlu mendapatkan Document. Ini adalah perwakilan halaman html kami. Jsoup mempunyai beberapa cara untuk mengubah tapak menjadi Document. Sambung ke pelayan
Document document = Jsoup.connect("https://hh.ru/").get();
Jsoup sendiri menyambung ke tapak. Kaedah ini adalah yang paling mudah, tetapi ia hanya sesuai untuk ujian. Terdapat pelanggan http yang lebih mudah dan fleksibel. Juga perlu diingat, tidak kira apa klien http yang anda gunakan, tambahkan pengepala pada permintaan User-Agentdengan nilai seperti Chrome/81.0.4044.138. Menggunakan pengepala ini, pelayan menentukan peranti yang anda sambungkan. Tanpa pengepala ini, pelayan menganggap anda sebagai bot dan mungkin melarang anda. Daripada fail ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Ini adalah cara utama untuk mendapatkan objek Document. Hujah terakhir "hh.ru"ialah URI asas. Ini adalah perlu untuk membuat pautan mutlak daripada yang relatif yang terdapat di tapak. Dari barisan
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");
Seterusnya, saya akan menunjukkan perpustakaan dalam html ini, yang mewakili tapak yang dipermudahkan. Mendapatkan tag Tugas utama semasa menghuraikan adalah untuk mendapatkan tag yang dikehendaki. Kami akan melakukan ini menggunakan kaedah select. Ambil perhatian bahawa ia sentiasa mengembalikan senarai teg. Jika tiada teg ditemui, senarai itu akan kosong. Anda perlu lulus pemilih CSS yang mana teg dicari sebagai hujah kaedah. Saya akan membincangkan pemilih dengan lebih terperinci, kerana semua kerja adalah untuk menulis pemilih yang betul. Biasanya kita perlu mengarangnya supaya ia mengembalikan satu teg.
Elements h1 = document.select("h1");
System.out.println(h1);
Dapatkan teg teg h1 Output:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Dapatkan tag title. Tanda >memilih teg titleyang bersarang dalam teghead
Elements divs = document.select("body > div");
Dapatkan teg divbersarangbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Dapatkan teg pertama divbersarang dalam body. Mendapatkan semula teg mengikut nombor siri adalah cara yang tidak baik, kerana kedudukannya di tapak mungkin berubah. Adalah lebih baik untuk menentukan teg menggunakan parameter mutlak. Parameter ini adalah atribut classdanid
Elements contentElem = document.select("body > div.content");
Dapatkan teg divdengan kelas "kandungan", bersarangbody
Elements idElem = document.select("#123");
Dapatkan teg dengan id "123"
Elements divHeader = document.select("body > div.header.main :not(h1)");
Dapatkan teg divdengan kelas "header" dan "main", bersarang dalam body, tetapi tanpa teg h1 . Output:

<div>
 Поиск вакансий
</div>
Kaedah Elemen Setelah kami menerima senarai, Elementskami boleh mengekstrak data daripadanya. Biar saya ingatkan anda bahawa biasanya pemilih mencari satu teg, i.e. mestilah Elementssaiz 1.
elements.size();
bilangan tag yang ditemui
elements.get(0);
dapatkan teg pertama daripada senarai yang ditemui
elements.text();
teks yang dibenamkan dalam teg
elements.attr("href");
nilai atribut "href".
elements.outerHtml();
perwakilan rentetan teg Jika anda perlu mendapatkan pemilih elemen dengan cepat, buka panel pembangun (f12) dalam penyemak imbas, klik kanan pada elemen, "lihat kod", klik kanan pada teg, kemudian "Salin" " Salin pemilih”. Pemilih sedemikian tidak akan optimum, tetapi ia agak sesuai untuk hasil yang cepat. Kesimpulan Ini adalah asas bekerja dengan perpustakaan Jsoup. Tetapi ini sudah cukup untuk menghuraikan tapak. Untuk bekerja dengan yakin, anda hanya perlukan latihan menulis pemilih di tapak sebenar. Ps Perpustakaan ini digunakan untuk menyelesaikan masalah besar pada tahap 38 Menghuraikan html dengan perpustakaan jsoup - 1Menghuraikan html dengan perpustakaan jsoup - 3
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION