DataSpider (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Какие будут использоваться технологии?)
 
(не показано 16 промежуточных версии 2 участников)
Строка 2: Строка 2:
 
|name=DataSpider
 
|name=DataSpider
 
|mentor=Куликов Дмитрий
 
|mentor=Куликов Дмитрий
|mentor_login={{URLENCODE:{{REVISIONUSER}}|WIKI}}
+
|mentor_login={{URLENCODE:Jubbon|WIKI}}
 
|semester=Весна 2015
 
|semester=Весна 2015
 
|course=1
 
|course=1
|summer=on
+
|summer=
 
|categorize=yes
 
|categorize=yes
 +
|is_archived=yes
 
}}
 
}}
  
Строка 13: Строка 14:
 
для обхода тематических сайтов в сети Интернет и извлечения "полезных" данных. Результатом обхода будет являться текстовый файл в формате CSV или TSV, содержащий извлеченные данные. Подобная программа необходима для получения открытых данных в случае, когда на сайте отсутствует возможность использовать API.
 
для обхода тематических сайтов в сети Интернет и извлечения "полезных" данных. Результатом обхода будет являться текстовый файл в формате CSV или TSV, содержащий извлеченные данные. Подобная программа необходима для получения открытых данных в случае, когда на сайте отсутствует возможность использовать API.
 
На выбор будут предложены сайты по следующим тематикам:
 
На выбор будут предложены сайты по следующим тематикам:
- Прогноз погоды (gismeteo.ru, meteoinfo.ru, hmn.ru, meteoservice.ru, foreca.ru)
+
* Прогноз погоды (gismeteo.ru, meteoinfo.ru, hmn.ru, meteoservice.ru, foreca.ru)
- Финансовые показатели и рейтинги банков (banki.ru, bankir.ru, 101bank.net, raexpert.ru, sravni.ru, banks-rating.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)
+
* Финансовые показатели и рейтинги страховых компаний (raexpert.ru, insuru.ru, ic-ratings.ru, inguru.ru, sravni.ru)
- Финансовые показатели и рейтинги туристических фирм (firms.turizm.ru, turreestr.ru, tursvodka.ru,tour-info.ru)
+
* Финансовые показатели и рейтинги туристических фирм (firms.turizm.ru, turreestr.ru, tursvodka.ru,tour-info.ru)
- Продажа и аренда недвижимости (cian.ru, realty.dmir.ru, irr.ru, egsnk.ru, gdeetotdom.ru)  
+
* Продажа и аренда недвижимости (cian.ru, realty.dmir.ru, irr.ru, egsnk.ru, gdeetotdom.ru)  
- Спортивные соревнования и спортивная аналитика (myscore.ru, news.sportbox.ru, sports.ru, championat.com)
+
* Спортивные соревнования и спортивная аналитика (myscore.ru, news.sportbox.ru, sports.ru, championat.com)
- Экскурсионные предложения (автобусные экскурсии, речные круизы)
+
* Экскурсионные предложения (автобусные экскурсии, речные круизы)
- Интернет-магазины (mvideo.ru, mediamarkt.ru, eldorado.ru, 003.ru, enter.ru)
+
* Интернет-магазины (mvideo.ru, mediamarkt.ru, eldorado.ru, 003.ru, enter.ru)
  
 
=== Чему вы научитесь? ===
 
=== Чему вы научитесь? ===
- основным принципам межсетевого взаимодействия по протоколу HTTP
+
* основным принципам межсетевого взаимодействия по протоколу HTTP
- извлекать различные данные из HTML-страниц с помощью языка запросов XPath и регулярных выражений
+
* извлекать различные данные из HTML-страниц с помощью языка запросов XPath и регулярных выражений
- разрабатывать алгоритмы для эффективного обхода множества страниц сайта
+
* разрабатывать алгоритмы для эффективного обхода множества страниц сайта
- корректно использовать аргументы командной строки, переменные окружения, стандартные потоки ввода и вывода при создании консольных утилит
+
* корректно использовать аргументы командной строки, переменные окружения, стандартные потоки ввода и вывода при создании консольных утилит
  
 
=== Какие начальные требования? ===
 
=== Какие начальные требования? ===
- желательно наличие базовые навыков программирования на языке Python
+
* желательно наличие базовых навыков программирования на языке Python
  
 
=== Какие будут использоваться технологии? ===
 
=== Какие будут использоваться технологии? ===
* Язык программирования Python версии 2.7
+
* Язык программирования Python версии 2.7
* Python-пакеты Grab, ScraPy, Selenium Web Driver и другие
+
* Python-пакеты Grab, ScraPy, pyspider, Selenium Web Driver и другие
* Язык запросов XPath
+
* Язык запросов XPath
* система контроля версий Git (или Mercurial по желанию студента)
+
* IaaS платформа Amazon Web Services рамках программы бесплатного использования одного экземпляра виртуальной машины на 1 год)
* GitHub в качестве система управления проектом (хранение исходного кода, отслеживание тикетов, управление релизами, ревью)  
+
* Amazon Web Services
+
  
 
=== Темы вводных занятий ===
 
=== Темы вводных занятий ===
Строка 46: Строка 45:
  
 
=== Критерии оценки ===
 
=== Критерии оценки ===
"4-5":
+
Оценки '''4-5''':
- утилита обходит только один сайт из выбранной тематики
+
* утилита обходит только один сайт из выбранной тематики
- повторный запуск приводит к перезатиранию предыдущих результатов
+
* повторный запуск приводит к перезатиранию предыдущих результатов
  
"6-7":
+
Оценки '''6-7''':
- утилита позволяет обходить два или более тематических сайта
+
* утилита позволяет обходить два или более тематических сайта
- повторный запуск приводит к накоплению данных в результирующих файлах
+
* повторный запуск приводит к накоплению данных в результирующих файлах
- утилита позволяет задавать различные опции командной строки
+
* утилита позволяет задавать различные опции командной строки
- разработаны и проходят модульные тесты для большей части кода
+
* разработаны и проходят модульные тесты для большей части кода
- реализовано корректное разграничение стандартных потоков ввода и вывода
+
* реализовано корректное разграничение стандартных потоков ввода и вывода
  
"8-10":
+
Оценки '''8-10''':
- применение mock-объектов для функционального тестирования (???)
+
* упаковка утилиты в Debian-пакет
- упаковка утилиты в Debian-пакет
+
* написана небольшая документация в формате Markdown
- написана небольшая документация в формате Markdown
+
* настройка cron-задания для периодического запуска утилиты
- настройка cron-задания для периодического запуска утилиты
+

Текущая версия на 10:36, 20 октября 2015

Ментор Куликов Дмитрий
Учебный семестр Весна 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, pyspider, Selenium Web Driver и другие
  • Язык запросов XPath
  • IaaS платформа Amazon Web Services (в рамках программы бесплатного использования одного экземпляра виртуальной машины на 1 год)

Темы вводных занятий

Направления развития

Каждая подобная утилита может рассматриваться как источник данных для проведения статистических исследований и различного рода аналитики. Собранные данные могут использоваться методами машинного обучения для построения различных описательных или предсказательных моделей.

Критерии оценки

Оценки 4-5:

  • утилита обходит только один сайт из выбранной тематики
  • повторный запуск приводит к перезатиранию предыдущих результатов

Оценки 6-7:

  • утилита позволяет обходить два или более тематических сайта
  • повторный запуск приводит к накоплению данных в результирующих файлах
  • утилита позволяет задавать различные опции командной строки
  • разработаны и проходят модульные тесты для большей части кода
  • реализовано корректное разграничение стандартных потоков ввода и вывода

Оценки 8-10:

  • упаковка утилиты в Debian-пакет
  • написана небольшая документация в формате Markdown
  • настройка cron-задания для периодического запуска утилиты