Инфа для изготовления парсера
86 сообщений
#16 лет назад
Привет всем. Посоветуйте что и как лучше сделать, чтоб сделать парсер текста. Не гуглил. Решил обратиться сразу к Вам всем
116 сообщений
98 сообщений
#15 лет назад
Цитата ("jamper"):Привет всем. Посоветуйте что и как лучше сделать, чтоб сделать парсер текста. Не гуглил. Решил обратиться сразу к Вам всем
Что и как лучше сделать?) Взять и написать парсер). Обычно пишут парсеры на php, (по крайней мере моё имхо и небольшой опыт).
Всё зависит от задачи - что конкретно парсить и откуда. Используют регулярные выражения.
ссылка - тут я задавал вопрос, это самое начало парсера. Загрузить содержание странички, потом выдирать то, что тебе нужно. Успехов.
53 сообщения
#15 лет назад
Текст парсят на Perl , поисковики пишут на C++ , Java , C# , на PHP делают все что попало )))
98 сообщений
#15 лет назад
LP_FUNKy, в php ведь предастаточно функций для парсинга. Там нехилая часть взята из perl
2195 сообщений
#15 лет назад
DenTal, регулярные выражения в perl будут работать быстрее.
98 сообщений
#15 лет назад
Sir_Michael, c этим спорить не буду. Да и зависит всё от конкретной задачи. Отпарсить что-то, потом сложить в mysql, потом оттуда вытащить = думаю на php будет и легче и быстрее (в написании)
35 сообщений
#15 лет назад
Цитата:DenTal, регулярные выражения в perl будут работать быстрее.
можете развить эту фразу? когда, в каких случаях, насколько видно будет разницу в скорости и при каких условиях?
2195 сообщений
#15 лет назад
Churchik, можно.Основное требование - нормальный хостинг, не virtual, т.к. в этом случае чаще всего парсинг на php будет быстрее. Использование mod_perl.
Разница в скорости может быть в разы даже при использовании PCRE в php. В google можно найти описание методик тестирования.
710 сообщений
#15 лет назад
Цитата ("DenTal"):Sir_Michael, c этим спорить не буду. Да и зависит всё от конкретной задачи. Отпарсить что-то, потом сложить в mysql, потом оттуда вытащить = думаю на php будет и легче и быстрее (в написании)
Будет одинаково, если знать и Perl и php в достаточной степени.
14 сообщений
#15 лет назад
Что значит быстрее и легче (в написании) ?если у меня наприме родной язык перл, а не пхп, то наверное мне будет быстрее и легче сделать на перле, чем на пхп. и наоборот

4 сообщения
#15 лет назад
ИМХО во-первых, для начала нужно определиться ЧТО ты хочешь парсить. Бо написАть универсальный парсер всего - невозможно.Если хочешь парсить HTML:
Тут есть много вариантов, какой текст ты хочешь парсить:
Если парсить HTML, можно идти 2-мя путями:
1. Работать с текстом. Допустим, нужно выдрать какую-то информацию из страницы.
1.1 Смотришь - ЧТО ты хочешь пропарсить и смотришь - ГДЕ это в файле находится (какие теги находятся перед нужным текстом, особенно обрати внимание на ID'шники элементов).
1.2 Делаешь набор методов, которые выдирают из страницы каждый параметр в отдельности.
1.3 Пишешь метод, который берёт все нужные параметры из страницы и делает с ними что положено.
2. Работать с деревом элементов.
2.1 Тут удобнее всего представлять HTML в виде XML, для этого сначала нужно сконвертировать HTML в XHTML.
2.2 Загрузить получившуюся XML'ку как XML-документ.
2.3 Ебашыть ноды как твоей душе угодно.
Если пишешь парсер обычных текстов.
Тут я использовал 2 метода:
1. Автоматы.
Автомат, он сложен в проектировании и продумывании, но когда ты его нарисовал, мысленно протестировал - то реализовывать автомат - сплошное удовольствие. Автомат - он почти не жрёт оперативной памяти, но очч требователен к скорокти запоминающего устройства.
Если данных много - то оптимизируй их загрузку с винта (грузи по 300 кб и парси их в оперативе).
Если не знаешь что такое автоматы - погугли постейший по запросу "Конечный автомат Милли для разбора лексем".
2. Регулярные выражения.
По задумке - гениальная штука.
Строкой символов указываешь правила, по которым будет выдираться инфа и спокойно ее выдираешь.
Но довольно тормозная штука, по определению, бо когда софт работает с регэкспами - он может тыщу раз пробежаться по одной и той-же строке выбирая выражение подходящее под регэксп, разрабатывать парсер с регэкспами - намного проще и быстрее, чем с использованием автоматов.
Небольшое отступление:
Разделяй и сортируй.
Если объем текста, который нужно пропарсить - огромный:
Давным-давно надо было написАть парсер, который сортирует и удаляет повторения из 15 гигабайтной текстовой базы.
Сортировать пузырьком 15 гигабайт мене никак не хотелось, рОвно как и не хотелось сортировать qsort'ом (однокуйственно - сортировал бы я так сутое двое :-) ).
Выход был таким:
Парсишь 15 гигов по 1 элементу и раскидываешь их в разные файлы (у меня их было около 500) я их раскидывал по первым двум буквам.
А потом подгружаешь каждый файл в отдельности и сортируешь его сколько влезет.
--
Вот.. Сказал почти всё, что думаю по поводу парсеров.
Если будут вопросы - пиши в личку, в АСЬку или на иМейл - постараюсь помочь.
626 сообщений
#15 лет назад
Цитата:Использование mod_perl
Еще FastCGI вспомните. Граббер/парсер запускается в режиме CLI (часто по cron), а никак не из под Web-сервера.