Geek University Data Engineering
Python
MongoDB
RESTful API
SOAP
JSON
XPath
Python:BeautifulSoup
Python:selenium
Python:Scrapy
В данном курсе были выполнены следующие задания.
-
Посмотреть документацию к API GitHub, разобраться как вывести список репозиториев для конкретного пользователя, сохранить JSON-вывод в файле *.json.
Решение -
Изучить список открытых API (https://www.programmableweb.com/category/all/apis). Найти среди них любое, требующее авторизацию (любого типа). Выполнить запросы к нему, пройдя авторизацию. Ответ сервера записать в файл.
Если нет желания заморачиваться с поиском, возьмите API вконтакте (https://vk.com/dev/first_guide). Сделайте запрос, чтобы получить список всех сообществ на которые вы подписаны.
Решение
Необходимо собрать информацию о вакансиях на вводимую должность (используем input или через аргументы) с сайтов Superjob и HH. Приложение должно анализировать несколько страниц сайта (также вводим через input или аргументы). Получившийся список должен содержать в себе минимум:
- Наименование вакансии.
- Предлагаемую зарплату (отдельно минимальную, максимальную и валюту).
- Ссылку на саму вакансию.
- Сайт, откуда собрана вакансия.
По желанию можно добавить ещё параметры вакансии (например, работодателя и расположение). Структура должна быть одинаковая для вакансий с обоих сайтов. Общий результат можно вывести с помощью dataFrame через pandas.
Для задания был выбран собственный рабочий проект, в котором требовалось собрать данные со справочника банков - bankchart.ru. Результат сбора сохранял в файл в формате JSON.
-
Развернуть у себя на компьютере/виртуальной машине/хостинге MongoDB и реализовать функцию, записывающую собранные вакансии в созданную БД.
Решение (Вместо вакансий взял информацию о банках из прошлого урока) -
Написать функцию, которая производит поиск и выводит на экран вакансии с заработной платой больше введённой суммы. Запрос должен анализировать одновременно минимальную и максимальную зарплату.
Решение (Реализовал поиск банков, по которым недособирали расширенную информацию) -
Написать функцию, которая будет добавлять в вашу базу данных только новые вакансии с сайта.
Решение (Реализовал добавление информации только по новым банкам)
-
Написать приложение, которое собирает основные новости с сайтов news.mail.ru, lenta.ru, yandex-новости. Для парсинга использовать XPath. Структура данных должна содержать:
[] название источника;
[] наименование новости;
[] ссылку на новость;
[] дата публикации. -
Сложить собранные данные в БД
Решение
Парсер под каждый сайт был реализован в виде отдельного класса:
LentaRuParser,
MailRuParser,
YandexRuParser,
а запуск парсинга и сохранение в базу MongoDB вынесен в отдельный скрипт
main.py
Написать программу, которая собирает входящие письма из своего
или тестового почтового ящика и сложить данные о письмах в базу данных
(от кого, дата отправки, тема письма, текст письма полный)
Решение
I вариант
-
Доработать паука в имеющемся проекте, чтобы он формировал item по структуре:
[] Наименование вакансии
[] Зарплата от
[] Зарплата до
[] Ссылку на саму вакансию
[] Сайт откуда собрана вакансия
И складывал все записи в БД (любую) -
Создать в имеющемся проекте второго паука по сбору вакансий с сайта superjob. Паук должен формировать item'ы по аналогичной структуре и складывать данные также в БД
II вариант
-
Создать двух пауков по сбору данных о книгах с сайтов labirint.ru и book24.ru
-
Каждый паук должен собирать:
[] Ссылку на книгу
[] Наименование книги
[] Автор(ы)
[] Основную цену
[] Цену со скидкой
[] Рейтинг книги -
Собранная информация должна складываться в базу данных
Решение: Pull Request, каталог с проектом Scrapy
Для задания, также как и в Уроке 2, был выбран собственный рабочий проект, в котором требовалось собрать данные со справочника банков - bankchart.ru.
-
Взять любую категорию товаров на сайте Леруа Мерлен. Собрать с использованием
ItemLoader
следующие данные:
[] название;
[] все фото;
[] параметры товара в объявлении;
[] ссылка;
[] цена. -
С использованием
output_processor
иinput_processor
реализовать очистку и преобразование данных. Цены должны быть в виде числового значения. -
Написать универсальный обработчик параметров объявлений, который будет формировать данные вне зависимости от их типа и количества.
-
Реализовать хранение скачиваемых файлов в отдельных папках, каждая из которых должна соответствовать собираемому товару.
Решение: Pull Request, каталог с проектом Scrapy
-
Написать приложение, которое будет проходиться по указанному списку двух и/или более пользователей Instagram и собирать данные об их подписчиках и подписках.
-
По каждому пользователю, который является подписчиком или на которого подписан исследуемый объект нужно извлечь имя, id, фото (остальные данные по желанию). Фото можно дополнительно скачать.
-
Собранные данные необходимо сложить в базу данных. Структуру данных нужно заранее продумать, чтобы:
-
Написать запрос к базе, который вернет список подписчиков только указанного пользователя
-
Написать запрос к базе, который вернет список профилей, на кого подписан указанный пользователь
Решение: Pull Request, каталог с проектом Scrapy