検索
ホームページウェブフロントエンドhtmlチュートリアルjsoup は HTML を解析します information_html/css_WEB-ITnose

jsoup の概要

jsoup は、URL アドレスと HTML テキスト コンテンツを直接解析できる Java HTML パーサーです。非常に省力的な API を提供しており、

DOM、CSS、および jQuery のような操作メソッドを通じてデータを取得および操作できます。

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

  • 1. URL、ファイル、または文字列から HTML を解析します

  • 2. DOM または CSS セレクターを使用してデータを検索し、取得します
  • 3.属性、テキスト
  • jsoup のメインクラス階層を図に示します。
  • ドキュメント入力

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

    // 直接从字符串中输入 HTML 文档String html = "<html><head><title>learn jsoup</title></head>"    + "<body id='body'><p>Parse and traverse an HTML document.</p></body></html>";Document doc = Jsoup.parse(html);// 从URL直接加载 HTML 文档Document doc = Jsoup.connect("http://itmyhome.com/").get();String title = doc.title();// 从文件中加载HTML文档File input = new File("D:/index.html");Document doc = Jsoup.parse(input, "UTF-8","http://itmyhome.com");

    HTML ドキュメントには多くのリンク、画像、参照された外部スクリプト、CSS ファイルなどが含まれるため、parse メソッドの 3 番目のメソッドでは 3 番目のパラメータを指定する必要はありません

    そして 3 番目のメソッドは、baseURL と呼ばれますこのパラメータの意味は、HTML ドキュメントが相対パスを使用して外部ファイルを参照する場合、

    jsoup がこれらの URL に接頭辞 (baseURL) を自動的に追加することです。

    たとえば、itmyhomeitmyhome に変換されます。

    データ抽出

    DOM メソッドを使用してドキュメントを走査する

    String html = "<html><head><title>learn jsoup</title></head>"        + "<body id='content'><a href='itmyhome.com'>hello</a>"        + "<a href='blog.itmyhome.com'>jsoup</a></body></html>";Document doc = Jsoup.parse(html);Element content = doc.getElementById("content");Elements links = content.getElementsByTag("a");for (Element link : links) {    String linkHref = link.attr("href");    String linkText = link.text();    System.out.println(linkHref + ", " + linkText);}

    Print

    itmyhome.com, helloblog.itmyhome.com, jsoup

    Description

    Elements このオブジェクトは、要素を検索し、要素内のデータを抽出して処理するための一連の DOM のようなメソッドを提供します。詳細は次のとおりです:

    要素を検索

    getElementById(String id)
  • getElementsByTag(String tag)
  • getElementsByClass(String className)
  • getElementsByAttribute(String key) (および関連する)メソッド)
  • 要素の兄弟: siblingElements()、firstElementSibling()、lastElementSibling(); nextElementSibling()、previousElementSibling()
  • グラフ:parent()、children()、child(intindex)
  • 要素データ

    attr(String key) 属性の取得 attr(String key, String value) 属性の設定
  • attributes() すべての属性の取得
  • id()、className()、classNames()
  • text() テキスト内容を取得します text(String value) テキスト内容を設定します
  • html() 要素内の HTML html (String 値)を取得します 要素内に HTML コンテンツを設定します
  • outerHtml( ) 要素の外側の HTML コンテンツを取得します
  • data() データ コンテンツ (例: script タグや style タグ) を取得します
  • tag() および tagName()
  • HTML とテキストを操作します

    append(String html)、prepend(String html)
  • appendText(String text)、prependText(String text)
  • appendElement(String tagName)、prependElement(String tagName)
  • html(String value)
  • セレクター構文を使用して要素を検索する
  • Document doc = Jsoup.connect("http://itmyhome.com/").get();Elements links = doc.select("a[href]"); // 带有href属性的a元素Elements pngs = doc.select("img[src$=.png]");// 扩展名为.png的图片Element icons = doc.select("span.icon").first();// class等于icon的span标签Elements resultLinks = doc.select("#header p"); // id为header元素之后的p元素

    上記から、jsoup は要素を取得するために jQuery と同じセレクターを使用することがわかります

    次の表は、jsoup のすべての構文の詳細なリストです。 jsoup セレクター。

    表 1. 基本的な使用法:

    タグ名 ns|tag などのタグ名を使用して検索します。 要素 #logo などの要素 ID を使用して検索します .head などの要素のクラス属性を使用して検索します 要素の属性を使用して検索すること (例: [href]) は、href 属性を持つすべての要素を取得することを意味します 検索する要素の属性名のプレフィックスを使用します。たとえば、[^data-] は次のように使用されます。 HTML5 のデータセット属性を検索します 位置決めに属性値を使用します。たとえば、幅属性値 500 を持つすべての要素を検索するには [width=500] これら 3 つの構文はそれぞれ、属性が value で始まり、value で終わり、 を含むことを表します。 img[src~=( ?i).(png|jpe?g)] などの属性値をフィルターする式 すべての要素を配置

    上記は最も基本的なセレクター構文です。これらの構文は組み合わせて使用​​することもできます。jsoup でサポートされている組み合わせは次のとおりです。 a#logo などの特定の要素の id 値 ->

    el.class

    #id
    .class
    [attribute]え]
    [^attr]
    [attr=value]
    [attr^ =value]、[attr$=value]、[attr *=value]
    [attr~=regex]
    *
    div.head などのクラスを配置します。 ->
    これら 5 つは、親子関係、マージ関係、階層関係を含む要素間の結合関係を表すセレクター構文です。 兄弟 A ~ 兄弟 X エル、エル、エル いくつかの基本的な構文と組み合わせに加えて、jsoup は次の使用もサポートしています。式 式を使用して要素をフィルタリングして選択します。以下は、jsoup でサポートされるすべての式のリストです。 :lt(n) たとえば、 td:lt(3) は 3 列未満を意味します :gt(n ) div p:gt(2) は div に 2 つ以上の p が含まれていることを意味します :eq(n)
    ancestor child
    親 > 子
    兄弟 A + 兄弟 B
    表 3: 式:
    form input:eq(1) は 1 つの入力のみを含むフォームを意味します

    :has (seletor)

    div:has(p) は p 要素を含む div を表します :not(selector) div:not(.logo) は、 class=logo 要素 :contains(text) p:contains(oschina) など、大文字と小文字を区別しない、特定のテキストを含む要素 :containsOwn(text) テキスト情報が含まれる場所のフィルタリング指定された条件と完全に等しい :matches(regex) テキスト フィルタリングに正規表現を使用します: div:matches((?i)login) :matchesOwn(regex) 正規表現を使用して検索しますそれ自体のテキスト

    从元素抽取属性,文本和HTML

  • 要取得一个属性的值,可以使用Node.attr(String key) 方法

  • 对于一个元素中的文本,可以使用Element.text()方法

  • 对于要取得元素或属性中的HTML内容,可以使用Element.html(),或Node.outerHtml()方法

  • 示例:

    String html = "<p>my <a href='http://itmyhome.com/'><b>blog</b></a> link.</p>";Document doc = Jsoup.parse(html);// 解析HTML字符串返回一个Document实现Element link = doc.select("a").first();// 查找第一个a元素String text = doc.body().text(); // "my blog link" 取得字符串中的文本String linkHref = link.attr("href"); // "http://itmyhome.com/" 取得链接地址String linkText = link.text(); // "blog" 取得链接地址中的文本String linkOuterH = link.outerHtml();// "<a href="http://itmyhome.com/"><b>blog</b></a>"String linkInnerH = link.html(); // "<b>blog</b>" 取得链接内的html内容System.out.println(text);System.out.println(linkHref);System.out.println(linkText);System.out.println(linkOuterH);System.out.println(linkInnerH);

    打印:

    my blog link.http://itmyhome.com/blog<a href="http://itmyhome.com/"><b>blog</b></a><b>blog</b>

    说明

    上述方法是元素数据访问的核心办法。此外还其它一些方法可以使用:

  • Element.id()

  • Element.tagName()

  • Element.className() and Element.hasClass(String className)

  • 修改数据

    在解析文档的同时,我们可能会需要对文档中的某些元素进行修改,例如我们可以为文档中的所有图片增加可点击链接、修改链接地址或者是修改文本等。

    下面是一些简单的例子:

    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的选择器找出元素,然后就可以通过以上的方法来进行修改,

    修改完直接调用 Element(s)的 html()方法就可以获取修改完的HTML文档。

    HTML文档清理

    在做网站的时候,经常会提供用户评论的功能。有些不坏好意的用户,会搞一些脚本到评论内容中,

    而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,例如XSS跨站点攻击之类的。

    使用jsoup HTML Cleaner 方法进行清除,看看下面这段代码:

    String unsafe = "<p><a href='http://itmyhome.com/' onclick='stealCookies()'>itmyhome</a></p>";String safe = Jsoup.clean(unsafe, Whitelist.basic());System.out.println(safe); //输出 : <p><a href="http://itmyhome.com/" rel="nofollow">itmyhome</a></p>

    jsoup使用一个Whitelist类用来对HTML文档进行过滤,该类提供几个常用方法:

    none() 只允许包含文本信息
    basic() 允许的标签包括:a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ul, 以及合适的属性
    simpleText() 只允许 b, em, i, strong, u 这些标签
    basicWithImages() 在 basic() 的基础上增加了图片
    relaxed() 这个过滤器允许的标签最多,包括:a, b, blockquote, br, caption, cite, code, col, colgroup, dd, dl, dt, em, h1, h2, h3, h4, h5, h6, i, img, li, ol, p, pre, q, small, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, u, ul



    作者:itmyhome

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

    HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

    テキストからウェブサイトへ:HTMLの力テキストからウェブサイトへ:HTMLの力Apr 13, 2025 am 12:07 AM

    HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

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

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

    HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

    HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

    HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

    htmlisaspecifictypeofcodefocuseduructuringwebcontent

    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ページスタイルを制御します。

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

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

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

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

    See all articles

    ホット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衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    MantisBT

    MantisBT

    Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

    SecLists

    SecLists

    SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。