findElement
Find elements in HTML tree
Description
Examples
Find Elements in HTML Tree
Read HTML code from the URL https://www.mathworks.com/help/textanalytics
using the webread
function.
url = "https://www.mathworks.com/help/textanalytics";
code = webread(url);
Parse the HTML code using htmlTree
.
tree = htmlTree(code);
Find all the hyperlinks in the HTML tree using findElement
. The hyperlinks are nodes with element name "A"
.
selector = "A";
subtrees = findElement(tree,selector);
View the first few subtrees.
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>
Extract the text from the subtrees using extractHTMLText
. The result contains the link text from each link on the page.
str = extractHTMLText(subtrees); str(1:10)
ans = 10×1 string
"Skip to content"
""
"Products"
"Solutions"
"Academia"
"Support"
"Community"
"Events"
"Get MATLAB"
""
Input Arguments
tree
— HTML tree
scalar htmlTree
object
HTML tree, specified as a scalar htmlTree
object.
selector
— CSS selector
string scalar | character vector
CSS selector, specified as a string scalar or a character vector. For more information, see CSS Selectors.
Output Arguments
subtrees
— Matching HTML subtrees
htmlTree
array
Matching HTML subtrees, returned as an htmlTree
array.
More About
HTML Elements
A typical HTML element contains the following components:
Element name – Name of the HTML tag. The element name corresponds to the
Name
property of the HTML tree.Attributes – Additional information about the tag. HTML attributes have the form
, wherename
="value
"
andname
denote the attribute name and value respectively. The attributes appear inside the opening HTML tag. To get the attribute values from an HTML tree, usevalue
getAttribute
.Content – Element content. The content appears between opening and closing HTML tags. The content can be text data or nested HTML elements. To extract the text from an
htmlTree
object, useextractHTMLText
. To get the nested HTML elements of anhtmlTree
object, use theChildren
property.
For example, the HTML element <a
href="https://www.mathworks.com">Home</a>
comprises the following
components:
Component | Value | Description | |
---|---|---|---|
Element name | a | Element is a hyperlink | |
Attribute | Attribute name | href | Hyperlink reference |
Attribute value | "https://www.mathworks.com" | Hyperlink reference value | |
Content | Home | Text to display |
CSS Selectors
CSS selectors specify patterns to match elements in a tree.
This table shows some examples showing how to extract different HTML elements from an HTML tree:
Task | CSS Selector | Example |
---|---|---|
Find all paragraph (<p> ) elements. | "p" | findElement(tree,"p") |
Find all paragraph (<p> ) and list item
(<li> ) elements. | "p,li" | findElement(tree,"p,li") |
Find all paragraph (<p> ) elements that are inside table
(<table> ) elements. | "table p" | findElement(tree,"table p") |
Find all hyperlink (<a> ) elements with hyperlink
reference attribute (href ) values ending with
".pdf" . | "a[href$="".pdf""]" | findElement(tree,"a[href$="".pdf""]") |
Find all paragraph (<p> ) elements that are the first
child of their parent. | "p:first-child" | findElement(tr,"p:first-child") |
Find all paragraph (<p> ) elements that are the first
paragraph element of their parent. | "p:first-of-type" | findElement(tr,"p:first-of-type") |
Find all emphasis (<em> ) elements where the parent is a
paragraph (<p> ) element. | "p > em" | findElement(tr,"p > em") |
Find all paragraph (<p> ) elements appearing immediately
after a heading 1 (<h1> ) element | "h1 + p" | findElement(tr,"h1 + p") |
Find all empty elements. | ":empty" | findElement(tr,":empty") |
Find all nonempty label (<label> ) elements. | "label:not(:empty)" | findElement(tr,"label:not(:empty)") |
The findElement
function supports all of CSS level 3, except for
the selectors ":lang"
, ":checked"
,
":link"
, ":active"
, ":hover"
,
":focus"
, ":target"
, ":enabled"
,
and ":disabled"
.
For more information about CSS selectors, see [1].
References
[1] CSS Selector Reference. https://www.w3schools.com/cssref/css_selectors.php
Version History
Introduced in R2018b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)