JavaRush /Java Blog /Random-TW /使用jsoup庫解析html
Сергей
等級 40
Москва

使用jsoup庫解析html

在 Random-TW 群組發布
所以我們想從該網站獲取具體資訊。讓我們看看如何逐步執行此操作。 使用 jsoup 函式庫解析 html - 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。透過序號檢索標籤是一種不好的方法,因為它在網站上的位置可能會改變。最好使用絕對參數來定義標籤。這些參數是屬性classid
Elements contentElem = document.select("body > div.content");
取得一個div帶有“content”類別的標籤,嵌套在body
Elements idElem = document.select("#123");
取得id為「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級的大問題的 使用 jsoup 函式庫解析 html - 1使用 jsoup 函式庫解析 html - 3
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION