jsoup は HTML を解析します information_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:26:39
オリジナル
1169 人が閲覧しました

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 値 ->

    #id
    .class
    [attribute]え]
    [^attr]
    [attr=value]
    [attr^ =value]、[attr$=value]、[attr *=value]
    [attr~=regex]
    *
    ancestor child
    親 > 子
    兄弟 A + 兄弟 B
    表 3: 式: