jsoup は HTML を解析します information_html/css_WEB-ITnose
jsoup の概要
jsoup は、URL アドレスと HTML テキスト コンテンツを直接解析できる Java HTML パーサーです。非常に省力的な API を提供しており、
DOM、CSS、および jQuery のような操作メソッドを通じてデータを取得および操作できます。
jsoup の主な機能は次のとおりです
1. URL、ファイル、または文字列から HTML を解析します
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) を自動的に追加することです。
たとえば、itmyhome は itmyhome に変換されます。
データ抽出
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);}
itmyhome.com, helloblog.itmyhome.com, jsoup
Elements このオブジェクトは、要素を検索し、要素内のデータを抽出して処理するための一連の DOM のようなメソッドを提供します。詳細は次のとおりです:
要素を検索getElementById(String id)
attr(String key) 属性の取得 attr(String key, String value) 属性の設定
append(String html)、prepend(String html)
セレクター構文を使用して要素を検索する
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. 基本的な使用法:
#id | |||||||||||||||||||||||||||||||||||
.class | |||||||||||||||||||||||||||||||||||
[attribute]え] | |||||||||||||||||||||||||||||||||||
[^attr] | |||||||||||||||||||||||||||||||||||
[attr=value] | |||||||||||||||||||||||||||||||||||
[attr^ =value]、[attr$=value]、[attr *=value] | |||||||||||||||||||||||||||||||||||
[attr~=regex] | |||||||||||||||||||||||||||||||||||
* | |||||||||||||||||||||||||||||||||||
ancestor child | これら 5 つは、親子関係、マージ関係、階層関係を含む要素間の結合関係を表すセレクター構文です。|
親 > 子 | |
兄弟 A + 兄弟 B | |
エル、エル、エル | |
表 3: 式: | |
:lt(n) | |
div p:gt(2) は div に 2 つ以上の p が含まれていることを意味します | |
:eq(n) |
: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文档进行过滤,该类提供几个常用方法:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
![]() ホットAIツール![]() Undresser.AI Undressリアルなヌード写真を作成する AI 搭載アプリ ![]() AI Clothes Remover写真から衣服を削除するオンライン AI ツール。 ![]() Undress AI Tool脱衣画像を無料で ![]() Clothoff.ioAI衣類リムーバー ![]() AI Hentai GeneratorAIヘンタイを無料で生成します。 ![]() 人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
2週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:Myriseのすべてのロックを解除する方法
4週間前
By 尊渡假赌尊渡假赌尊渡假赌
![]() ホットツール![]() メモ帳++7.3.1使いやすく無料のコードエディター ![]() SublimeText3 中国語版中国語版、とても使いやすい ![]() ゼンドスタジオ 13.0.1強力な PHP 統合開発環境 ![]() ドリームウィーバー CS6ビジュアル Web 開発ツール ![]() SublimeText3 Mac版神レベルのコード編集ソフト(SublimeText3) ![]() ホットトピック
Gmailメールのログイン入り口はどこですか?
![]() ![]()
CakePHP チュートリアル
![]() ![]()
Steamのアカウント名の形式は何ですか
![]() ![]()
NYTの接続はヒントと回答です
![]() ![]() ![]() この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合 ![]() この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。 ![]() この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex ![]() 記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。 ![]() この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。 ![]() この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。 ![]() この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。 ![]() GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する ![]() |