JavaRush /Java Blog /Random-JA /jsoupライブラリを使用したhtmlの解析
Сергей
レベル 40
Москва

jsoupライブラリを使用したhtmlの解析

Random-JA グループに公開済み
したがって、サイトから具体的な情報を取得したいと考えています。これを行う方法を段階的に見てみましょう。 jsoup ライブラリを使用した html の解析 - 1まず、 を取得する必要がありますDocument。これは HTML ページを表したものです。Jsoup には、サイトを .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);
タグの取得 tagsh1 出力:

<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。シリアル番号でタグを取得することは、サイト上のタグの位置が変わる可能性があるため、不適切な方法です。絶対パラメータを使用してタグを定義することをお勧めします。これらのパラメータは属性であり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そこからデータを抽出できます。通常、セレクターは 1 つのタグを検索することを思い出してください。サイズは1でなければなりませんElements
elements.size();
見つかったタグの数
elements.get(0);
見つかったタグのリストから最初のタグを取得します
elements.text();
タグに埋め込まれたテキスト
elements.attr("href");
「href」属性値
elements.outerHtml();
タグの文字列表現 要素セレクターをすばやく取得する必要がある場合は、ブラウザで開発者パネル (f12) を開き、要素を右クリックして「コードを表示」し、タグを右クリックして「コピー」します。コピーセレクター」。このようなセレクターは最適ではありませんが、迅速な結果には非常に適しています。 結論 これは、Jsoup ライブラリを使用する基本です。しかし、サイトを解析するにはこれで十分です。自信を持って作業するために必要なのは、実際のサイトでセレクターを書く練習をすることだけです。Ps このライブラリは、レベル 38 の大きな問題を解決するために使用されます。 jsoup ライブラリを使用した html の解析 - 1jsoup ライブラリを使用した html の解析 - 3
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION