Main Content

findElement

HTML ツリー内の要素の検出

説明

subtrees = findElement(tree,selector) は、CSS セレクターに一致する tree 内の要素を返します。

すべて折りたたむ

関数 webread を使用して、URL https://www.mathworks.com/help/textanalytics から HTML コードを読み取ります。

url = "https://www.mathworks.com/help/textanalytics";
code = webread(url);

htmlTree を使用して HTML コードを解析します。

tree = htmlTree(code);

findElement を使用して、HTML ツリー内のすべてのハイパーリンクを見つけます。ハイパーリンクは、要素名が "A" のノードです。

selector = "A";
subtrees = findElement(tree,selector);

最初のいくつかのサブツリーを表示します。

subtrees(1:10)
ans = 
  10×1 htmlTree:

    <A class="skip_link sr-only" href="#content_container">Skip to content</A>
    <A href="https://www.mathworks.com?s_tid=gn_logo" class="svg_link navbar-brand"><IMG src="/images/responsive/global/pic-header-mathworks-logo.svg" class="mw_logo" alt="MathWorks"/></A>
    <A href="https://www.mathworks.com/products.html?s_tid=gn_ps">Products</A>
    <A href="https://www.mathworks.com/solutions.html?s_tid=gn_sol">Solutions</A>
    <A href="https://www.mathworks.com/academia.html?s_tid=gn_acad">Academia</A>
    <A href="https://www.mathworks.com/support.html?s_tid=gn_supp">Support</A>
    <A href="https://www.mathworks.com/matlabcentral/?s_tid=gn_mlc">Community</A>
    <A href="https://www.mathworks.com/company/events.html?s_tid=gn_ev">Events</A>
    <A href="https://www.mathworks.com/products/get-matlab.html?s_tid=gn_getml">Get MATLAB</A>
    <A href="https://www.mathworks.com?s_tid=gn_logo" class="svg_link pull-left"><IMG src="/images/responsive/global/pic-header-mathworks-logo.svg" class="mw_logo" alt="MathWorks"/></A>

extractHTMLText を使用してサブツリーからテキストを抽出します。結果には、ページ上の各リンクから抽出したリンク テキストが含まれます。

str = extractHTMLText(subtrees);
str(1:10)
ans = 10×1 string
    "Skip to content"
    ""
    "Products"
    "Solutions"
    "Academia"
    "Support"
    "Community"
    "Events"
    "Get MATLAB"
    ""

入力引数

すべて折りたたむ

HTML ツリー。スカラー htmlTree オブジェクトとして指定します。

CSS セレクター。string スカラーまたは文字ベクトルとして指定します。詳細については、CSS セレクターを参照してください。

出力引数

すべて折りたたむ

一致する HTML サブツリー。htmlTree 配列として返されます。

詳細

すべて折りたたむ

HTML 要素

一般的な HTML 要素には、次のコンポーネントが含まれます。

  • 要素名 – HTML タグの名前。要素名は、HTML ツリーの Name プロパティに対応します。

  • 属性 – タグに関する追加情報。HTML 属性の形式は name="value" で、namevalue はそれぞれ属性名と値を示します。属性は HTML の開始タグの内部に出現します。HTML ツリーから属性値を取得するには、getAttribute を使用します。

  • コンテンツ – 要素のコンテンツ。コンテンツは HTML の開始タグと終了タグの間に出現します。コンテンツは、テキスト データまたは入れ子の HTML 要素です。htmlTree オブジェクトからテキストを抽出するには、extractHTMLText を使用します。htmlTree オブジェクトの入れ子の HTML 要素を取得するには、Children プロパティを使用します。

たとえば、HTML 要素 <a href="https://www.mathworks.com">Home</a> は、次のコンポーネントで構成されます。

コンポーネント説明
要素名a要素はハイパーリンク
属性属性名hrefハイパーリンク参照
属性値"https://www.mathworks.com"ハイパーリンク参照の値
コンテンツHome表示するテキスト

CSS セレクター

CSS セレクターは、ツリー内の要素に一致するパターンを指定します。

次の表は、HTML ツリーからさまざまな HTML 要素を抽出する方法を示すいくつかの例を示しています。

タスクCSS セレクター
すべての段落 (<p>) 要素を見つける。"p"findElement(tree,"p")
すべての段落 (<p>) 要素とリスト項目 (<li>) 要素を見つける。"p,li"findElement(tree,"p,li")
テーブル (<table>) 要素内にあるすべての段落 (<p>) 要素を見つける。"table p"findElement(tree,"table p")
".pdf" で終わるハイパーリンク参照属性 (href) 値をもつすべてのハイパーリンク (<a>) 要素を見つける。"a[href$="".pdf""]"findElement(tree,"a[href$="".pdf""]")
親の最初の子であるすべての段落 (<p>) 要素を見つける。"p:first-child"findElement(tr,"p:first-child")
親の最初の段落要素であるすべての段落 (<p>) 要素を見つける。"p:first-of-type"findElement(tr,"p:first-of-type")
親が段落 (<p>) 要素である強調 (<em>) 要素をすべて見つける。"p > em"findElement(tr,"p > em")
見出し 1 (<h1>) 要素の直後に出現するすべての段落 (<p>) 要素を見つける"h1 + p"findElement(tr,"h1 + p")
すべての空要素を見つける。":empty"findElement(tr,":empty")
空でないラベル (<label>) 要素をすべて見つける。"label:not(:empty)"findElement(tr,"label:not(:empty)")

関数 findElement は、セレクター ":lang"":checked"":link"":active"":hover"":focus"":target"":enabled"、および ":disabled" を除き、CSS レベル 3 をすべてサポートしています。

CSS セレクターの詳細については、[1]を参照してください。

参照

バージョン履歴

R2018b で導入