10.000 вариантов снять квартиру или сам себе POE-риелтор

22
10.000 вариантов снять квартиру или сам себе POE-риелтор

description

YAPC Russia 2009 "May Perl 2"

Transcript of 10.000 вариантов снять квартиру или сам себе POE-риелтор

Page 1: 10.000 вариантов снять квартиру или сам себе POE-риелтор

10.000 вариантов снять квартиру или сам себе POE-риелтор

Page 2: 10.000 вариантов снять квартиру или сам себе POE-риелтор
Page 3: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Вид каталога

Page 4: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Идентификатор

Page 5: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Подробная информация

Page 6: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Паук на POE и драйверная система

Page 7: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Структура драйвера{ name => 'landlord', url => sub { ... }, url_details => sub { ... }, types => { app_for_sale => 'flat', rent_flat => 'flat', house_for_sale => 'house', rent_house => 'house', }, connection_options => { keep_alive => 0, }, parsers => { count => sub { ... }, details => sub { ... }, items => sub { ... }, },}

Page 8: 10.000 вариантов снять квартиру или сам себе POE-риелтор

3 функции для разбора собранных страниц

parsers => { count => sub { ... }, details => sub { ... }, items => sub { ... }, },

Page 9: 10.000 вариантов снять квартиру или сам себе POE-риелтор

2 Функции для генерации ссылок

url => sub { ... }, url_details => sub { ... },

Page 10: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Драйвер готов!

Page 11: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Основные этапы работы

Page 12: 10.000 вариантов снять квартиру или сам себе POE-риелтор

1. ИнициализацияОпределение количества страниц каталога

Page 13: 10.000 вариантов снять квартиру или сам себе POE-риелтор

2. Сбор каталога Сбор страниц по подготовленным ссылкам

Page 14: 10.000 вариантов снять квартиру или сам себе POE-риелтор

3. Анализ собранных объектовСравнение объектов в нашей БД и в каталоге-источнике

Page 15: 10.000 вариантов снять квартиру или сам себе POE-риелтор

4. Сбор подробной информации по новым объектам

Page 16: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Необычный поиск

• Получить идентификатор с помощью LWP::UserAgent

• Генерировать ссылки с использованием идентификатора

Page 17: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Ошибки в каталогах

Page 18: 10.000 вариантов снять квартиру или сам себе POE-риелтор

POE::Component::Client::Keepalivev 0.25

Page 19: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Сервера риелторов не выдерживали нагрузок

Apache + CGI = 5 запросов одновременно

Page 20: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Маленькие радости

Отдельное “спасибо” разработчикам, сделавшим параметр «количество

объектов на странице»

Page 21: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Полуавтоматический режим

Меняется представление информации, необходимо постоянно

поддерживать работу пауков

Page 22: 10.000 вариантов снять квартиру или сам себе POE-риелтор

Спасибо за внимание!

Константинов ДмитрийRostovOnDon.pm