синтаксический анализ в основном для решения (предложения) в его составные части и описания их синтаксических ролей.
Согласно википедии, анализ или синтаксический анализ - это процесс анализа строки символов либо на естественном языке, либо на компьютерных языках в соответствии с правилами формальной грамматики. Термин синтаксический анализ происходит от латинских пар (orationis), что означает часть (речи).
В вашем случае, HTML разборе в основном: принимать в HTML код и извлечение необходимой информации, как заголовок страницы, параграфы страницы, заголовки на странице, ссылки, жирный текст и т.д. Парсеры:
Компьютерная программа, которая анализирует контент, называется парсером. Существует, как правило, 2 вида парсеров:
Разбор по принципу «сверху вниз» - синтаксический анализ сверху вниз можно рассматривать как попытку найти самые левые деривации входного потока путем поиска деревьев разбора с использованием расширения сверху вниз данных формальных правил грамматики. Токены потребляются слева направо. Интеллектуальный выбор используется для обеспечения двусмысленности, расширяя все альтернативные правые стороны правил грамматики.
Разбор партитуры - синтаксический анализатор может начинаться с ввода и пытаться переписать его на символ начала. Интуитивно, парсер пытается найти самые основные элементы, затем элементы, содержащие их, и так далее. LR-парсеры являются примерами анализаторов снизу вверх. Другим термином, используемым для этого типа анализатора, является Shift-Reduce parsing. Несколько примеров парсеры: сверху вниз парсеры:
Recursive descent parser
LL parser (Left-to-right, Leftmost derivation)
Earley parser
Восходящие парсеры:
Внеочередные анализатор Оператор-старшинство анализатор Простой старшинство анализатор BC (ограниченное контекст) разборе LR-анализатор (слева направо, правое порождение) Simple LR (SLR) анализатор LALR анализатор Canonical LR (LR (1)) анализатор РВО анализатор CYK анализатор Рекурсивного восхождение анализатор
Пример парсер:
Вот пример HTML-парсер в питоне:
из HTMLparser импорта HTMLparser
создать подкласс и переопределить методы обработки
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print "Encountered a start tag:", tag
def handle_endtag(self, tag):
print "Encountered an end tag :", tag
def handle_data(self, data):
print "Encountered some data :", data
создать экземпляр синтаксического анализатора и загрузить его HTML
parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'<body><h1>Parse me!</h1></body></html>')
Вот результат:
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h1
Encountered some data : Parse me!
Encountered an end tag : h1
Encountered an end tag : body
Encountered an end tag : html
Ссылки:
https://stackoverflow.com/a/20421508/5326667
Что делает выборка? –
@mohsendoraghi - Stackoverflow - не подходящее место, чтобы просить определения общих английских слов. – Quentin