所以我們想從該網站獲取具體資訊。讓我們看看如何逐步執行此操作。 首先我們需要獲得
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
帶有“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級的大問題的
GO TO FULL VERSION