Какво е всичко това
Отклонение за парсъри
Основната характеристика на сайтовете за синтактичен анализ или други недобре структурирани формати - е размерът на знания за конкретни случаи, формата, използван в дивата природа.
А изроден случай на притежание на цялото знание - е синтактичен анализ на един сайт. Т.е. ако искаме да крадат статии Habrahabr, например, за да се отпечатат през нощта на мастилено-струен принтер и жертва на Сатаната - ние можем да погледнем в съществуващото оформление и е лесно да се определи, че заглавието на публикацията е h1.title.
Програмата е написана по такъв начин, ще бъде почти никакви грешки; за всеки отделен сайт Habrahabr трябва да напише нова програма.
Дегенеративна идеален случай: парсера не знае, той има данни във всякакъв формат. Пример за такава програма, - струни (съществува в повечето операционни системи не са игрални).
Ако приложите струните, на които е предназначен нещо за четене на файла, можете да получите списък с всичко, което е подобно на текста в рамките на файла. Например, команда за печат за форматиране наколни редове в рамките на двоични LS. и сертификат.
Колкото по-малко знания, толкова по-универсален синтактичен анализ.
Това вече имат
Текуща версия на четливост затворен и висеше с разнообразие от търсенето кифлички. Има API.
Има една вилица на първата версия на четливост компания Apple (Reader функция в Safari). Изходният код не е много отворен, но го погледнете това е възможно, там е още по-регулярни изрази и специални случаи (например, има променлива - isWordPressSite).
Проблеми на оригиналния сценарий - сложността на промяната, аркадна евристични методи. По принцип тя работи, но това изисква нетривиален довършителни файл. Версия Apple е лицензиран и не е ясно.
Какво да пиша
За синтактичен анализ сайтове с минимално познаване на маркиране. Input - една страница на сайта, или фрагмент на страница. Резултатът - на текстово представяне на входните данни.
Важен критерий - универсалност: програмата ще работи както на клиента и сървъра. Така че ние не се привързват към съществуващите реализации на DOM, и да изгради своя структура на данните (тя също така работи по-бързо от DOM пълен, тъй като данните трябва да gulkin, например, на носа).
Поради тази причина, програмата няма да бъде в състояние да изтеглите собствените си страници от Интернет, резултати магазин на диска, има потребителски интерфейс, крос шевове.
Животът и приключенията на алгоритъма
Търсачката намерих няколко статии по темата на алгоритмичен процес, описан по-горе. Най-вече ми хареса китайците тук PDF формат.
Формула да получа малко повече, така че ще говоря за кратко, за да му версия на китайски алгоритъм.
Достатъчно място за трудови подвизи
Само в случай, че все още се провери, че след премахването на оценката на отломки от родителя увеличава, ако не и (или нарасна незначително) - Аз не изтриете, ако не е достатъчно.
HTML. Алгоритъмът не използва знания за структурата на документа, сега можете да добавите, за да се подобри (или ускоряване) на работната програма. Т.е. например, предварително pessimizirovat
Текстови сигнали. Ако текстът съдържа запетайки, интервали и други препинателни знаци, то най-вероятно е свързан текст (за разлика от навигация, например). Това евристичен е четливост.
Тук е необходимо да се обърне внимание на това, което пунктуация на различни езици все още различен и запетаи в китайски ( "# 65292;" Unicode U + FF0C) различен от характера "," (на ASCII 44).
Какво се е случило, как да се използват
Резултатът е Обадих непретенциозен readability2, изложени в националните ръководители.
Kratenko за тестове
За да тествате такова нещо, че е необходимо да се избегне регресии (и по-общо за автоматично тестване на програмата - това е страхотно).
Изходният код без тестове: GitHib
Пример за използване
За илюстрация, написах demo.html страница. , в която два реда текст сред всички навигация.
Текстът се нарича "Име". Съдържанието на:
Цялата околност наблюдаваше тихо Божие чудо:
Поп Игнатий tilibonkal вашата църква prichindal.
Това трябва да бъде резултат от план на програмата. Ако резултатът не е едно и също, а след това всичко се обърка.
Документация, тя API
дизайнер:
Нищо не става.
SAX интерфейс:
Тогава всички аргументи - низа.
За да получите резултата:
На изхода: res.heading - заглавие на статията, а текстът - на основния текст без форматиране.
Вместо reader.clean може да пише друго форматиране, а след това там няма да бъдат подготвени текстове, и просто за маркиране, например.
Важна забележка: на снимката вляво е без значение за този пост. Ето защо, ако тя не се зарежда, и не виждате няма снимка в ляво - не се притеснявайте.
Свързани статии