Вечная тема про парсинг HTML

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Вечная тема про парсинг HTML

Сообщение beria » 07.01.2017 11:30:41

Да, нашел много вариантов решений и иные даже вроде работают....
Да, изучил мануал про стандарт HTML 5
И про XML тоже....
Даже про сокеты, SSL и OpenVPN...
И вообще сейчас работает всё, кроме парсера......
А теперь, может все-же у кого завалялся заведомо работающий кроссистемный вариант, чтобы засунуть поток или файл в некую не визуальную (ну нет никакого GUI у программы и не надо) и устойчивую к ошибкам источника структуру (коллекцию или дерево), по которой потом можно пройтись циклом и отредактировать то что мне там надо отредактировать, а потом собрать оную структуру обратно в HTML, а далее в поток или файл....
Ну задолбали исходники без комментариев, примеров или работающие ,но ссылающиеся на библиотеки которых или в win нет или в линуксе, или вообще только из какой-то левой версии Дельфи.... :mrgreen:
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Вечная тема про парсинг HTML

Сообщение vitaly_l » 07.01.2017 13:27:17

Самым лучшим "парсером", является любой "интернет проводник". Там можно обратиться к элементам по ID, или по NAME, или по CLASS, или по названию тега. Наиболее простое решение, написать программу на JS и ей парсить HTML в любом интернет вьювере.

С другой стороны, в Лазарусе, стандартный Лазарусовский HTML-вьювер, так или иначе - строит DOM-дерево. Соответственно, можно его использовать, в качестве, элемента без GUI, который построит вам DOM-дерево, по которому вы сможете пробежаться с помощью цикла и внести необходимые корректировки.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Вечная тема про парсинг HTML

Сообщение beria » 07.01.2017 13:52:43

vitaly_l писал(а):Самым лучшим "парсером", является любой "интернет проводник". Там можно обратиться к элементам по ID, или по NAME, или по CLASS, или по названию тега. Наиболее простое решение, написать программу на JS и ей парсить HTML в любом интернет вьювере.

С другой стороны, в Лазарусе, стандартный Лазарусовский HTML-вьювер, так или иначе - строит DOM-дерево. Соответственно, можно его использовать, в качестве, элемента без GUI, который построит вам DOM-дерево, по которому вы сможете пробежаться с помощью цикла и внести необходимые корректировки.


Ну какой интернет-проводник? Какая жава-скрипт? Какие вьюверы? Нету такого и не будет. Есть только голая консоль и даже в общем случае никакой сети, а из ввода-вывода только ини файлы.
И лазарувский вьювер плотно завязан на визуальные элементы и тащит кучу библиотек, кои мне даром не нужны. Если бы мне надо было отобразить страницу - есть дофига документированных способов и куда проще и удобнее лазарувского.... Тот же хромиум. Там вообще почти нечего даже кодить не надо, немеренно примеров , ну ежели не лень почти 100 метров библиотек тянуть в проект...
Есть в сырцах FPC "Fast HTML Parser" . Но это именно голый парсер для которого надо указать синтаксис, но как это там сделать - очередной вопрос, ибо далее он используется для парсинга не HTML данных, а док традиционно нет.....
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Вечная тема про парсинг HTML

Сообщение Лекс Айрин » 07.01.2017 14:07:07

beria, человек не видел ничего кроме винды... что ты от него хочешь? Имхо, если нужен парсер, то придется его написать. Тем более, что в html нет ничего особо страшного. Да, долго, но, в принципе, теги оформлены так, что их довольно легко найти. А если нужно ковыряться в самих тегах, не как строка, а как набор данных, то придется по любому делать синтаксический анализ.

Реализацию дерева, списка, механизма обхода не бинарного дерева и преобразования его в список можно найти в любой учебнике по паскалю начиная от 70х годов. Ну а уж сохранить в список или прочитать в дерево, думаю, будет еще проще. Все компоненты заточены под что-то определенное, поэтому сильно сомневаюсь, что найдется какой-нибудь универсальный. Тем более, что сейчас консоль не сильно котируется.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Вечная тема про парсинг HTML

Сообщение beria » 07.01.2017 14:23:46

Лекс Айрин писал(а):Имхо, если нужен парсер, то придется его написать.

Я и сам к этому пришел в итоге, хотя до последнего откладывал в наивной надежде найти готовое решение да лень-матушка,... Точнее нормальных решений нашел несколько, но не для фрипаскаля или время разбора чужого кода будет гораздо более написания своего... Не понимаю, почему именно для фрипаса, эта тема так не популярна....
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Вечная тема про парсинг HTML

Сообщение Лекс Айрин » 07.01.2017 17:08:54

beria писал(а):Не понимаю, почему именно для фрипаса, эта тема так не популярна....


Видимо, из-за того, что, вслед за дельфи, в нем сделан упор на БД. Да и паскаль уже не так популярен как раньше. Хотя все может измениться, но, имхо, для этого нужен диалект паскаля не умеющий коммерческого балласта. Развитие FPC сейчас тормозит необходимость оглядываться на дельфи. А дельфи оглядывается на си.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Вечная тема про парсинг HTML

Сообщение CynicRus » 07.01.2017 21:22:59

Можно кстати попробовать вот это: https://github.com/benibela/internettools/blob/master/data/simplehtmlparser.pas , там же есть и в дерево парсер. Похоже, именно то, что ищет ТС.
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: Вечная тема про парсинг HTML

Сообщение beria » 08.01.2017 11:40:08

CynicRus писал(а):Можно кстати попробовать вот это: https://github.com/benibela/internettools/blob/master/data/simplehtmlparser.pas , там же есть и в дерево парсер. Похоже, именно то, что ищет ТС.

Вроде оно. Спс. :mrgreen:
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27

Рейтинг@Mail.ru