目次
jsoup オンライン API: jsoup 1.6.3 API
jsoup 開発ガイド
ホームページ ウェブフロントエンド htmlチュートリアル Jsoup を使用して HTML_html/css_WEB-ITnose を解析および操作する

Jsoup を使用して HTML_html/css_WEB-ITnose を解析および操作する

Jun 24, 2016 am 11:40 AM

jsoup の概要

jsoup は、URL アドレスと HTML テキスト コンテンツを直接解析できる Java HTML パーサーです。これは、DOM、CSS、および jQuery のような操作メソッドを通じてデータを取得および操作するための、非常に低労力の API を提供します。

jsoup の主な機能は次のとおりです:

1. URL、ファイル、または文字列から HTML を解析します。
2. DOM または CSS セレクターを使用してデータを検索し、取得します。
3. HTML 要素、属性、およびテキストを操作します。 ;

jsoup は MIT ライセンスに基づいてリリースされており、商用プロジェクトで安心して使用できます。

jsoup の主要なクラス階層を以下の図に示します。



次に、特にいくつかの一般的なアプリケーション シナリオに焦点を当て、jsoup がどのように HTML ドキュメントをエレガントに処理できるかを説明します。

ドキュメント入力

jsoup は、文字列、URL アドレス、ローカル ファイルから HTML ドキュメントをロードし、Document オブジェクト インスタンスを生成できます。

以下は関連するコードです:

// 直接从字符串中输入 HTML 文档String html = "<html><head><title>开源中国社区</title></head>"  + "<body><p>这里是 jsoup 项目的相关文章</p></body></html>";Document doc = Jsoup.parse(html); // 从URL直接加载 HTML 文档Document doc = Jsoup.connect("http://www.oschina.net/").get();String title = doc.title(); Document doc = Jsoup.connect("http://www.oschina.net/")  .data("query", "Java")   //请求参数  .userAgent("I’m jsoup") //设置User-Agent  .cookie("auth", "token") //设置cookie  .timeout(3000)           //设置连接超时时间  .post();                 //使用POST方法访问URL // 从文件中加载 HTML 文档File input = new File("D:/test.html");Document doc = Jsoup.parse(input,"UTF-8","http://www.oschina.net/");
ログイン後にコピー


最後の HTML ドキュメント入力メソッドの parse の 3 番目のパラメーターに注意してください。なぜここで URL を指定する必要があるのですか (最初と同様に指定することはできません)。方法) ? HTML ドキュメントには多くのリンク、画像、参照される外部スクリプト、CSS ファイルなどが含まれるため、baseURL という名前の 3 番目のパラメータは、HTML ドキュメントが相対パスを使用して外部ファイルを参照するときに、jsoup が自動的にこれらの URL を使用することを意味します。接頭辞としてbaseURLが付きます。

たとえば、オープン ソース ソフトウェアオープン ソース ソフトウェア に変換されます。

HTML 要素を解析して抽出する

このパートでは HTML パーサーの最も基本的な機能が含まれますが、jsoup は他のオープン ソース プロジェクトとは異なるセレクターを使用します。このパートでは、jsoup の選択について詳しく説明します。このセクションでは、jsoup が最も単純なコードでどのように実装されるかを説明します。

ただし、jsoup は従来の DOM 要素分析も提供します。次のコードを見てください。

File input = new File("D:/test.html");Document doc = Jsoup.parse(input, "UTF-8", "http://www.oschina.net/"); Element content = doc.getElementById("content");Elements links = content.getElementsByTag("a");for (Element link : links) {  String linkHref = link.attr("href");  String linkText = link.text();}
ログイン後にコピー


jsoup のメソッドは JavaScript と同じメソッド名であると思われるかもしれません。機能も完全に一貫しています。ノード名または HTML 要素の ID に基づいて、対応する要素または要素リストを取得できます。

htmlparser プロジェクトとは異なり、jsoup は HTML 要素に対応するクラスを定義しません。通常、HTML 要素のコンポーネントには、ノード名、属性、テキストが含まれます。これは、これらのデータを自分で取得するための簡単なメソッドです。 jsoup がスリムなままである理由もここにあります。

要素の取得に関しては、jsoup のセレクターは単純に万能です。

File input = new File("D:\test.html");Document doc = Jsoup.parse(input,"UTF-8","http://www.oschina.net/"); Elements links = doc.select("a[href]"); // 具有 href 属性的链接Elements pngs = doc.select("img[src$=.png]");//所有引用png图片的元素  Element masthead = doc.select("div.masthead").first();// 找出定义了 class=masthead 的元素 Elements resultLinks = doc.select("h3.r > a"); // direct a after h3
ログイン後にコピー


これが、jsoup が要素を取得するために jQuery と同じセレクターを使用する点です。他の HTML に切り替えると、インタプリタの場合、少なくとも多くのコード行が必要ですが、jsoup は 1 行のコードだけで完了します。


jsoup のセレクターは式関数もサポートしています。この超強力なセレクターについては最後のセクションで紹介します。

データの変更
ドキュメントの解析中に、ドキュメント内の一部の要素を変更する必要がある場合があります。たとえば、ドキュメント内のすべての画像にクリック可能なリンクを追加したり、リンク アドレスを変更したり、テキストを変更したりすることができます。 。

ここにいくつかの簡単な例を示します:

doc.select("div.comments a").attr("rel", "nofollow");//为所有链接增加 rel=nofollow 属性 doc.select("div.comments a").addClass("mylinkclass");//为所有链接增加 class=mylinkclass 属性 doc.select("img").removeAttr("onclick"); //删除所有图片的onclick属性 doc.select("input[type=text]").val(""); //清空所有文本输入框中的文本
ログイン後にコピー


理由は非常に簡単です。jsoup のセレクターを使用して要素を見つけるだけで済み、タグ名を除いて上記の方法で要素を変更できます。要素の属性やテキストを含めて変更することはできません (削除してから新しい要素を挿入できます)。


変更後、要素の html() メソッドを直接呼び出して、変更された HTML ドキュメントを取得できます。

HTML ドキュメントのクリーニング
jsoup は、ユーザーフレンドリーでありながら強力な API を提供するという点で素晴らしい仕事をします。 Webサイトを構築する際、ユーザーからのコメント機能が設けられることが多いです。一部のユーザーは悪意があり、コメント コンテンツにいくつかのスクリプトを追加します。これらのスクリプトはページ全体の動作を破壊する可能性があり、さらに深刻なことに、XSS クロスサイト攻撃などの機密情報を入手する可能性があります。

jsoup はこの点に関して非常に強力なサポートを備えており、使い方は非常に簡単です。次のコードを見てください:

String unsafe = "<p><a href='http://www.oschina.net/' onclick='stealCookies()'>开源中国社区</a></p>";String safe = Jsoup.clean(unsafe, Whitelist.basic());// 输出: // <p><a href="http://www.oschina.net/" rel="nofollow">开源中国社区</a></p>
ログイン後にコピー
jsoup は、HTML ドキュメントをフィルタリングするために Whitelist クラスを使用します。 このクラスは、いくつかの一般的なメソッドを提供します:

これら 5 つのフィルタのどれも要件を満たさない場合はどうなりますか。 Flash アニメーションを挿入しても構いません。ホワイトリストには、whitelist.addTags("embed","object","param","span","div"); などの拡張機能が用意されています。また、addAttributes を呼び出して属性を追加することもできます。特定の要素に。

jsoup の優れているところは?? セレクター

先ほど、jsoup がセレクターを使用して要素を取得する方法を簡単に紹介しました。このセクションでは、セレクター自体の強力な構文に焦点を当てます。次の表は、jsoup セレクターのすべての構文の詳細なリストです。

基本的な使用法

上記は最も基本的なセレクター構文です。これらの構文は、jsoup でサポートされている組み合わせで使用することもできます。

いくつかの基本的な構文とこれらの組み合わせに加えて。構文、jsoup も式を使用した要素フィルターの選択をサポートします。以下は、jsoup でサポートされているすべての式のリストです:

概要
ここでは jsoup の基本的な機能を紹介しましたが、jsoup の優れた拡張性 API 設計により、次の定義を通じて開発できます。 selectors 非常に強力な HTML 解析機能。また、jsoup プロジェクト自体の開発も活発なので、Java を使用していて HTML の処理が必要な場合は、試してみるとよいでしょう。

上記はオープンソースの中国語コミュニティからの抜粋です:

添付ファイル:

jsoup オンライン API: jsoup 1.6.3 API

jsoup 開発ガイド

著作権に関する声明: この記事はブロガーによって書かれています。オリジナルの記事はブロガーの許可なしに転載することはできません。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

HTML、CSS、およびJavaScriptの理解:初心者向けガイド HTML、CSS、およびJavaScriptの理解:初心者向けガイド Apr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

WebアノテーションにY軸位置の適応レイアウトを実装する方法は? WebアノテーションにY軸位置の適応レイアウトを実装する方法は? Apr 04, 2025 pm 11:30 PM

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Apr 04, 2025 pm 11:54 PM

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

HTML、CSS、およびJavaScript:Web開発者に不可欠なツール HTML、CSS、およびJavaScript:Web開発者に不可欠なツール Apr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? Apr 05, 2025 am 06:15 AM

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

See all articles