Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как распарсить html (https://javascript.ru/forum/offtopic/60087-kak-rasparsit-html.html)

cyber 11.12.2015 01:55

Mаxmaxmаximus, сенк за идею

cyber 11.12.2015 10:36

Mаxmaxmаximus,
чет как то не очень работает http://jsfiddle.net/789692dq/1/

cyber 11.12.2015 12:35

Mаxmaxmаximus, кстати, если хочешь по веселится присоединяйся, еще пару пунктов
по позиции нужно определить:
- позиция находится внутри атрибута
- внутри тела тэга <tag тут >
- внутри текстовой части тэга <tag> тут </tag>
- или так <tag> <t /> внутри этого </tag>
Потому скину что получилось, если есть интересные идеи то слушаю)
Сейчас делаю это с помощью конечного автомата

cyber 11.12.2015 16:02

Как отличить " \" " от ' " '

Mаxmaxmаximus 11.12.2015 16:09

Цитата:

Сообщение от cyber
Как отличить " \" " от ' " '

Перед парсингом пробегайся по всем экранированным символам и заменяй их на специальную строку заменитель типа $_TMP_$, и сохраняй то что заменяешь в массив, а потом, после обработки, заменяй все вхождения $_TMP_$ на данные из массива в соовтетствующем порядке)

Не знай насколько это правильно но это мне ускоряит парсинг, но я это пометил как оптимизация. НО я все таки язык парсю, и у меня экранирование может какую то логику иметь и.т.п. а у тебя конкретная задача.

Mаxmaxmаximus 11.12.2015 16:11

Цитата:

Сообщение от cyber
кстати, если хочешь по веселится присоединяйся, еще пару пунктов

я уже выше написал парсер, парсишь в "токенлист", массив в котором список обьектов {имяТега, закрывающийЛиТег}

парсишь в одну сторону, парсшь в другую, поулчаешь 2 массива.
далее анализируешь эти теги, сколько открывающих было сколько закрывающий и определяешь в каком месте мы сейчас наодимся.

п.с.ч то нужно анализимровать второй массив который ПОСЛЕ нужного символа идет я не уверен)

cyber 11.12.2015 16:12

Mаxmaxmаximus, сенк)

cyber 11.12.2015 16:13

Mаxmaxmаximus,
Цитата:

Сообщение от cyber
Сейчас делаю это с помощью конечного автомата

по таком принципу как работает польшая часть парсеров

Mаxmaxmаximus 11.12.2015 16:13

парси теги, учитывая чт они могут быть незакрытыми

парси просто, выискивай скобочки <слово и не обязательно закрывающий тег, или вообще просто треугольные скобочки выискивай

Mаxmaxmаximus 11.12.2015 16:15

Цитата:

Сообщение от cyber
по таком принципу как работает польшая часть парсеров

Ну у меня например ThreeBuilder работает по другому, так типа как регулярные выражения рекурсивные, тока ты каждый элемент опсиываешь яваскрипт функцией и он сам парсит внутри себя, и сам решает когда закончился его код и передает управление дальше. в общем годная тема, потом покажу.

можно наследоваться и парсить любые языки и красиво их описывать да и работает молнеиносно.
есть типа токены а есть лексемы, функциями мы описываем лексемы) а дальше используем как будто регулярку пишем. словами не обьяснить пока


Часовой пояс GMT +3, время: 06:20.