DataSpider (проект) — различия между версиями
Материал из Wiki - Факультет компьютерных наук
Jubbon (обсуждение | вклад) (→Чему вы научитесь?) |
Jubbon (обсуждение | вклад) (→Какие начальные требования?) |
||
Строка 29: | Строка 29: | ||
=== Какие начальные требования? === | === Какие начальные требования? === | ||
− | + | * желательно наличие базовые навыков программирования на языке Python | |
=== Какие будут использоваться технологии? === | === Какие будут использоваться технологии? === |
Версия 18:40, 19 ноября 2014
Ментор | Куликов Дмитрий |
Учебный семестр | Весна 2015 |
Учебный курс | 1-й курс |
Проект можно развивать на летней практике | |
Что это за проект?
Задачей проекта DataSpider является реализация консольной утилиты, предназначенной для обхода тематических сайтов в сети Интернет и извлечения "полезных" данных. Результатом обхода будет являться текстовый файл в формате CSV или TSV, содержащий извлеченные данные. Подобная программа необходима для получения открытых данных в случае, когда на сайте отсутствует возможность использовать API. На выбор будут предложены сайты по следующим тематикам:
- Прогноз погоды (gismeteo.ru, meteoinfo.ru, hmn.ru, meteoservice.ru, foreca.ru) - Финансовые показатели и рейтинги банков (banki.ru, bankir.ru, 101bank.net, raexpert.ru, sravni.ru, banks-rating.ru, сайт ЦБ РФ) - Финансовые показатели и рейтинги страховых компаний (raexpert.ru, insuru.ru, ic-ratings.ru, inguru.ru, sravni.ru) - Финансовые показатели и рейтинги туристических фирм (firms.turizm.ru, turreestr.ru, tursvodka.ru,tour-info.ru) - Продажа и аренда недвижимости (cian.ru, realty.dmir.ru, irr.ru, egsnk.ru, gdeetotdom.ru) - Спортивные соревнования и спортивная аналитика (myscore.ru, news.sportbox.ru, sports.ru, championat.com) - Экскурсионные предложения (автобусные экскурсии, речные круизы) - Интернет-магазины (mvideo.ru, mediamarkt.ru, eldorado.ru, 003.ru, enter.ru)
Чему вы научитесь?
- основным принципам межсетевого взаимодействия по протоколу HTTP
- извлекать различные данные из HTML-страниц с помощью языка запросов XPath и регулярных выражений
- разрабатывать алгоритмы для эффективного обхода множества страниц сайта
- корректно использовать аргументы командной строки, переменные окружения, стандартные потоки ввода и вывода при создании консольных утилит
Какие начальные требования?
- желательно наличие базовые навыков программирования на языке Python
Какие будут использоваться технологии?
- Язык программирования Python версии 2.7
- Python-пакеты Grab, ScraPy, Selenium Web Driver и другие
- Язык запросов XPath
- система контроля версий Git (или Mercurial по желанию студента)
- GitHub в качестве система управления проектом (хранение исходного кода, отслеживание тикетов, управление релизами, ревью)
- Amazon Web Services
Темы вводных занятий
Направления развития
Каждая подобная утилита может рассматриваться как источник данных для проведения статистических исследований и различного рода аналитики. Собранные данные могут использоваться методами машинного обучения для построения различных описательных или предсказательных моделей.
Критерии оценки
"4-5":
- утилита обходит только один сайт из выбранной тематики - повторный запуск приводит к перезатиранию предыдущих результатов
"6-7":
- утилита позволяет обходить два или более тематических сайта - повторный запуск приводит к накоплению данных в результирующих файлах - утилита позволяет задавать различные опции командной строки - разработаны и проходят модульные тесты для большей части кода - реализовано корректное разграничение стандартных потоков ввода и вывода
"8-10":
- применение mock-объектов для функционального тестирования (???) - упаковка утилиты в Debian-пакет - написана небольшая документация в формате Markdown - настройка cron-задания для периодического запуска утилиты