Jsoup コード解釈 one-overview_html/css_WEB-ITnose
今日、テキストを抽出するために Python で書かれたものを見つけました。喜んで Java で実装し、Webmagic に入れました。その後、それがすでに Jsoup に存在していることがわかりました。とても信頼できないと感じました。そんなことは忘れて、落ち着いて良いことを学びましょう!
Jsoup は、Java の世界での HTML 解析とフィルタリングに最適です。 HTML の DOM ツリーへの解析をサポートし、CSS セレクターのフォーム選択をサポートし、HTML フィルタリングをサポートし、HTTP ダウンローダーも付属しています。今日からJsoupのソースコード解釈シリーズを書いていきます。 前回のブログと比べて、より詳しく書いてみます。
概要
Jsoup のコードは非常に簡潔で、合計 53 のクラスがあり、SAXON の最終リリース パッケージ (980 万) と比較すると、非常に短くなります。簡潔。
jsoup
§── 例 #例。HTML をプレーン テキストに変換する例と、すべてのリンク アドレスを抽出する例が含まれます。
§── ヘルパー #データの読み取り、接続の処理、文字列変換のためのツールを含むいくつかのツールクラス
§── ノード #DOM ノードの定義
├── パーサー #HTML を解析して DOM ツリーに変換します
§── 安全性 #ホワイトリストや HTML フィルタリングを含む安全性関連
└── #Selector を選択、CSS セレクターと NodeVisitor 形式のトラバーサルをサポート
使用
Jsoup への入り口は Jsoup クラスです。サンプル パッケージには 2 つの例が用意されています。html を解析した後、CSS Selector と NodeVisitor を使用してそれぞれ Dom 要素を操作します。
Jsoup を呼び出す方法を示す ListLinks の例を次に示します。
public static void main(String[] args) throws IOException { Validate.isTrue(args.length == 1, "usage: supply url to fetch"); String url = args[0]; print("Fetching %s...", url);// 下载url并解析成html DOM结构 Document doc = Jsoup.connect(url).get(); // 使用select方法选择元素,参数是CSS Selector表达式 Elements links = doc.select("a[href]");print("\nLinks: (%d)", links.size()); for (Element link : links) { //使用abs:前缀取绝对url地址 print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35)); }}
もう 1 つの方法は、NodeVisitor を介して DOM ツリーをトラバースすることです。これは、HTML 全体を分析して置換する場合に便利です。
public interface NodeVisitor {//遍历到节点开始时,调用此方法 public void head(Node node, int depth);//遍历到节点结束时(所有子节点都已遍历完),调用此方法 public void tail(Node node, int depth);}HtmlToPlainText的例子说明了如何使用NodeVisitor来遍历DOM树,将html转化为纯文本,并将需要换行的标签替换为换行\n:public static void main(String... args) throws IOException { Validate.isTrue(args.length == 1, "usage: supply url to fetch"); String url = args[0];// fetch the specified URL and parse to a HTML DOM Document doc = Jsoup.connect(url).get();HtmlToPlainText formatter = new HtmlToPlainText(); String plainText = formatter.getPlainText(doc); System.out.println(plainText);}public String getPlainText(Element element) { //自定义一个NodeVisitor - FormattingVisitor FormattingVisitor formatter = new FormattingVisitor(); //使用NodeTraversor来装载FormattingVisitor NodeTraversor traversor = new NodeTraversor(formatter); //进行遍历 traversor.traverse(element); return formatter.toString();}

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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