exponenta event banner

findElement

Поиск элементов в дереве HTML

Описание

пример

subtrees = findElement(tree,selector) возвращает элементы в tree соответствует селектору CSS.

Примеры

свернуть все

Считывание HTML-кода с URL-адреса https://www.mathworks.com/help/textanalytics с использованием webread функция.

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

Анализ кода HTML с помощью htmlTree.

tree = htmlTree(code);

Поиск всех гиперссылок в дереве HTML с помощью findElement. Гиперссылки представляют собой узлы с именем элемента "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-селектор, заданный как строковый скаляр или символьный вектор. Дополнительные сведения см. в разделе Селекторы CSS.

Выходные аргументы

свернуть все

Соответствующие поддеревья HTML, возвращенные как htmlTree массив.

Подробнее

свернуть все

Элементы HTML

Типичный элемент HTML содержит следующие компоненты:

  • Имя элемента - имя HTML-тега. Имя элемента соответствует Name свойства HTML-дерева.

  • Атрибуты (Attributes) - дополнительная информация о теге. Атрибуты HTML имеют форму name="value", где name и value обозначают имя атрибута и значение соответственно. Атрибуты отображаются в открывающемся теге HTML. Чтобы получить значения атрибутов из HTML-дерева, используйте getAttribute.

  • Содержимое - содержимое элемента. Содержимое отображается между открывающими и закрывающими тегами HTML. Содержимое может представлять собой текстовые данные или вложенные элементы HTML. Извлечение текста из htmlTree объект, использование extractHTMLText. Получение вложенных элементов HTML htmlTree объект, используйте 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")
Найти все абзацы (<p>) элементы, находящиеся внутри таблицы (<table>) элементы."table p"findElement(tree,"table p")
Найти все гиперссылки (<a>) элементы с атрибутом ссылки на гиперссылку (href) значения, оканчивающиеся на ".pdf"."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")
Найти все подчеркивания (<em>) элементы, где родительский элемент является абзацем (<p>) элемент."p > em"findElement(tr,"p > em")
Найти все абзацы (<p>) элементы, появляющиеся сразу после заголовка 1 (<h1>) элемент"h1 + p"findElement(tr,"h1 + p")
Найти все пустые элементы.":empty"findElement(tr,":empty")
Найти все непустые метки (<label>) элементы."label:not(:empty)"findElement(tr,"label:not(:empty)")

findElement функция поддерживает все CSS уровня 3, за исключением селекторов ":lang", ":checked", ":link", ":active", ":hover", ":focus", ":target", ":enabled", и ":disabled".

Для получения дополнительной информации о селекторах CSS см. [1].

Ссылки

[1] Ссылка на селектор CSS. https://www.w3schools.com/cssref/css_selectors.asp

Представлен в R2018b