![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Добрый день,
я всех уже наверное забодал этими граберами, но уж очень хочется быстро разобраться в данной теме. В данном случае интересует алгоритм и исполнение грабера: Вот например, понятно, что многопоточные и нет, с докачкой и без, обычно их (граберы) запускают локально (чтобы все модули были и т.п.), но иногда их запускают на хостинге, если хостинг дает доступ к консоли (так?) Но еще,наверное, грабер может запускаться как CGI скрипт!?. (ну иногда ставят в такие условия, что консоли нет, а выполняться грабер должен на хостинге) И тут возникают вопросы - каким образом этот скрипт можно выполнить по расписанию?, и чтобы он выполнялся - все равно нужна же клиентская машина с броузером, то есть пока она включена - скрипт выполняется, как только выключится - ему негде выполнятся? Или я чего то не понимаю? Кто как делает эти парсеры при помощи CGI? Часто вижу, требуют написать парсер как модуль к CMS (ни пусть что это не Perl, а обычно PHP) все равно не могу понять - что для синхронизации данных (если парсер допустим имеет свой WEb интерфейс) какая то кнопка запуска вручную нажимается ? - а если это нужно делать каждые 15 минут - как это исполнить? всем спасибо. |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
На всех виденных мною хостингах есть cron.
|
|||
|
||||
infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: нет Всего: 1 |
Запускать кроном или еще как, а веб интерфейс только отображает текущее состояние процесса, по определенным флагам.
|
|||
|
||||
OutlawZ |
|
|||
Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 269 Регистрация: 19.10.2007 Репутация: нет Всего: нет |
Тут все просто, если грабер скажем новостей для определенной CMS то я использую модуль HTML::Template т.е готовый шаблон CMS я вставляю свои теги где будет отображаться вывод работы грабера и загружаею его через HTML::Template после всех выполненных операций присваиваю значения переменным HTML::Template. Если нужно что бы код повторялся каждые 15 минут то тут я выставляют sleep и после redo. т.е вернуться в начало цикла для выполнения операции. так как обработку я делаю в цикле. Таким способом работал для форума SMF писал плагины для отображения новостей с других сайтов. т.е грабер работал как плагин ![]() Это сообщение отредактировал(а) OutlawZ - 8.4.2011, 22:55 -------------------- ![]() ![]() |
|||
|
||||
Wooster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 13.4.2011 Где: Лондон Репутация: нет Всего: нет |
Кто-нибудь юзает HTML::TreeBuilder для парсинга HTML?
|
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Я отказался от парсинга при помощи стандартных модулей (наверное в силу того, что сложно разобраться).
по моему легче регексп написать и разбирать - как тебе надо, выдергивать нужные куски |
|||
|
||||
infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: нет Всего: 1 |
Да уж, ёмкая причина. Я вот не поленился исследовать HTML::TreeBuilder::XPath, теперь время разработки сокращается во много раз.
|
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
А вот подскажите еще по технологии.
Допустим итернет-магазин, часто построен так категория - список товаров - товар (описание) чем отследить такое вот сочетание. 1. Ну один способ я делал имя файла, в котором хранится контент = url на этот контент, если ссылки логичные , то они друг в друга вложены - можно понять, что к чему относится А бывает так, что ссылки на товар никак ни похожи на ссылки на список товаров или категорию и тексты в списке товаров не встречаются в описании товаров), то есть привязаться никак нельзя - как в таком случае грабить, чтобы так сказать дерево сайта (структуру) сохранить? |
|||
|
||||
infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: нет Всего: 1 |
Ну можете по папкам раскидать, если уж обязательно хотите в файлах данные хранить.
|
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
В том то и дело что не пойму как это сделать.
Сейчас поясню на примере ... ссылка на меню /avto/ далее на список модели /avto/vaz/ далее уже на товар /avto/vaz/lada-kalina таким образом заложив урл в имя файла, куда стянут контент avto_vaz_lada-kalina.htm можно построить типа дерева, карты сайта, ну или по крайней мере знать кому что принадлежит - удобно при разборе. а бывает вот так ссылка на меню /?menu=1231245 ссылка на категорию /?cat=324234 ссылка на товар /?goods=677878678 Получается нужно при грабке как то отслеживать что куда вложено , то есть нужно дерево даже не html Страницы, а всего сайта построить... может какое то готовое решение есть? Иногда на допустим /?goods=677878678 информации достаточно для извлечения, но иногда заказчик требует информации и из списка /?cat=324234. Часто бывает что этом списке есть уникальное сочетание (наименование модели), которое одинаково и в /?goods=677878678 (описании товара), ну тогда понятно как делать. А вот если в списке товара содержится одно описание , а в описании другое, то необходим какой то общий алгоритм разбора таких сайтов, который бы учитывал вложенность и принадлежность. Может кто расскажет как делать ? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |