Поиск элементов в дереве HTML
Считывание 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"
""
tree - дерево HTMLhtmlTree объектHTML-дерево, указанное как скаляр htmlTree объект.
selector - Селектор CSSCSS-селектор, заданный как строковый скаляр или символьный вектор. Дополнительные сведения см. в разделе Селекторы CSS.
subtrees - Соответствующие поддеревья HTMLhtmlTree множествоСоответствующие поддеревья HTML, возвращенные как htmlTree массив.
Типичный элемент HTML содержит следующие компоненты:
Имя элемента - имя HTML-тега. Имя элемента соответствует Name свойства HTML-дерева.
Атрибуты (Attributes) - дополнительная информация о теге. Атрибуты HTML имеют форму , где name="value" и name обозначают имя атрибута и значение соответственно. Атрибуты отображаются в открывающемся теге HTML. Чтобы получить значения атрибутов из HTML-дерева, используйте valuegetAttribute.
Содержимое - содержимое элемента. Содержимое отображается между открывающими и закрывающими тегами HTML. Содержимое может представлять собой текстовые данные или вложенные элементы HTML. Извлечение текста из htmlTree объект, использование extractHTMLText. Получение вложенных элементов HTML htmlTree объект, используйте Children собственность.
Например, элемент HTML <a href="https://www.mathworks.com">Home</a> содержит:
| Компонент | Стоимость | Описание | |
|---|---|---|---|
| Имя элемента | a | Элемент является гиперссылкой | |
| Признак | Наименование атрибута | href | Ссылка на гиперссылку |
| Значение атрибута | "https://www.mathworks.com" | Ссылочное значение гиперссылки | |
| Содержание | Home | Текст для отображения | |
Селекторы 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
extractFileText | extractHTMLText | getAttribute | htmlTree | ismissing | readPDFFormData | tokenizedDocument
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.