Найдите элементы в дереве HTML
Считайте код HTML из https://www.mathworks.com/help/textanalytics
URL использование
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="svg_link navbar-brand" href="https://www.mathworks.com?s_tid=gn_logo"><IMG alt="MathWorks" class="mw_logo" src="/images/responsive/global/pic-header-mathworks-logo.svg"/></A> <A class="mwa-nav_login" href="https://www.mathworks.com/login?uri=http://www.mathworks.com/help/textanalytics/index.html">Sign In</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/company/aboutus/contact_us.html?s_tid=gn_cntus">Contact Us</A> <A href="https://www.mathworks.com/store?s_cid=store_top_nav&s_tid=gn_store">How to Buy</A>
Извлеките текст из поддеревьев с помощью extractHTMLText
. Результат содержит текст ссылки от каждой ссылки на странице.
str = extractHTMLText(subtrees); str(1:10)
ans = 10×1 string array
""
"Sign In"
"Products"
"Solutions"
"Academia"
"Support"
"Community"
"Events"
"Contact Us"
"How to Buy"
tree
— Дерево HTMLhtmlTree
объектДерево HTML, заданное как скалярный htmlTree
объект.
selector
— Селектор CSSСелектор CSS, заданный как скаляр строки или вектор символов. Для получения дополнительной информации см. CSS Селекторы.
subtrees
— Соответствие с поддеревьями HTMLhtmlTree
массивСоответствие с поддеревьями HTML, возвращенными как htmlTree
массив.
Типичный элемент HTML содержит следующие компоненты:
Имя элемента – Имя HTML-тэга. Имя элемента соответствует Name
свойство дерева HTML.
Атрибуты – Дополнительная информация о теге. HTML-атрибуты имеют форму
, где name
= "value
"
и name
обозначьте название атрибута и значение соответственно. Атрибуты появляются во вводном HTML-тэге. Чтобы получить значения атрибута от дерева HTML, используйте value
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 задают шаблоны, чтобы совпадать с элементами в дереве.
Эта таблица показывает некоторые примеры, показывающие, как извлечь различные элементы 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
функционируйте поддерживает весь уровень 3 CSS, за исключением селекторов ":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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.