Skip to content

GB: Методы сбора и обработки данных из сети Интернет

Notifications You must be signed in to change notification settings

bostspb/parsing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Методы сбора и обработки данных из сети Интернет

Geek University Data Engineering

Python MongoDB RESTful API SOAP JSON XPath
Python:BeautifulSoup Python:selenium Python:Scrapy

В данном курсе были выполнены следующие задания.

Урок 1. Основы клиент-серверного взаимодействия. Парсинг API

  1. Посмотреть документацию к API GitHub, разобраться как вывести список репозиториев для конкретного пользователя, сохранить JSON-вывод в файле *.json.
    Решение

  2. Изучить список открытых API (https://www.programmableweb.com/category/all/apis). Найти среди них любое, требующее авторизацию (любого типа). Выполнить запросы к нему, пройдя авторизацию. Ответ сервера записать в файл.
    Если нет желания заморачиваться с поиском, возьмите API вконтакте (https://vk.com/dev/first_guide). Сделайте запрос, чтобы получить список всех сообществ на которые вы подписаны.
    Решение

Урок 2. Парсинг HTML. BeautifulSoup, MongoDB

Необходимо собрать информацию о вакансиях на вводимую должность (используем input или через аргументы) с сайтов Superjob и HH. Приложение должно анализировать несколько страниц сайта (также вводим через input или аргументы). Получившийся список должен содержать в себе минимум:

  • Наименование вакансии.
  • Предлагаемую зарплату (отдельно минимальную, максимальную и валюту).
  • Ссылку на саму вакансию.
  • Сайт, откуда собрана вакансия.

По желанию можно добавить ещё параметры вакансии (например, работодателя и расположение). Структура должна быть одинаковая для вакансий с обоих сайтов. Общий результат можно вывести с помощью dataFrame через pandas.

Решение

Для задания был выбран собственный рабочий проект, в котором требовалось собрать данные со справочника банков - bankchart.ru. Результат сбора сохранял в файл в формате JSON.

Урок 3. Системы управления базами данных MongoDB и SQLite в Python

  1. Развернуть у себя на компьютере/виртуальной машине/хостинге MongoDB и реализовать функцию, записывающую собранные вакансии в созданную БД.
    Решение (Вместо вакансий взял информацию о банках из прошлого урока)

  2. Написать функцию, которая производит поиск и выводит на экран вакансии с заработной платой больше введённой суммы. Запрос должен анализировать одновременно минимальную и максимальную зарплату.
    Решение (Реализовал поиск банков, по которым недособирали расширенную информацию)

  3. Написать функцию, которая будет добавлять в вашу базу данных только новые вакансии с сайта.
    Решение (Реализовал добавление информации только по новым банкам)

Урок 4. Парсинг HTML. XPath

  1. Написать приложение, которое собирает основные новости с сайтов news.mail.ru, lenta.ru, yandex-новости. Для парсинга использовать XPath. Структура данных должна содержать:
    [] название источника;
    [] наименование новости;
    [] ссылку на новость;
    [] дата публикации.

  2. Сложить собранные данные в БД

Решение
Парсер под каждый сайт был реализован в виде отдельного класса: LentaRuParser, MailRuParser, YandexRuParser, а запуск парсинга и сохранение в базу MongoDB вынесен в отдельный скрипт main.py

Урок 5. Selenium в Python

Написать программу, которая собирает входящие письма из своего или тестового почтового ящика и сложить данные о письмах в базу данных (от кого, дата отправки, тема письма, текст письма полный)
Решение

Урок 6. Scrapy

I вариант

  1. Доработать паука в имеющемся проекте, чтобы он формировал item по структуре:
    [] Наименование вакансии
    [] Зарплата от
    [] Зарплата до
    [] Ссылку на саму вакансию
    [] Сайт откуда собрана вакансия
    И складывал все записи в БД (любую)

  2. Создать в имеющемся проекте второго паука по сбору вакансий с сайта superjob. Паук должен формировать item'ы по аналогичной структуре и складывать данные также в БД

II вариант

  1. Создать двух пауков по сбору данных о книгах с сайтов labirint.ru и book24.ru

  2. Каждый паук должен собирать:
    [] Ссылку на книгу
    [] Наименование книги
    [] Автор(ы)
    [] Основную цену
    [] Цену со скидкой
    [] Рейтинг книги

  3. Собранная информация должна складываться в базу данных

Решение: Pull Request, каталог с проектом Scrapy

Для задания, также как и в Уроке 2, был выбран собственный рабочий проект, в котором требовалось собрать данные со справочника банков - bankchart.ru.

Урок 7. Scrapy. Парсинг фото и файлов

  1. Взять любую категорию товаров на сайте Леруа Мерлен. Собрать с использованием ItemLoader следующие данные:
    [] название;
    [] все фото;
    [] параметры товара в объявлении;
    [] ссылка;
    [] цена.

  2. С использованием output_processor и input_processor реализовать очистку и преобразование данных. Цены должны быть в виде числового значения.

  3. Написать универсальный обработчик параметров объявлений, который будет формировать данные вне зависимости от их типа и количества.

  4. Реализовать хранение скачиваемых файлов в отдельных папках, каждая из которых должна соответствовать собираемому товару.

Решение: Pull Request, каталог с проектом Scrapy

Урок 8. Работа с данными

  1. Написать приложение, которое будет проходиться по указанному списку двух и/или более пользователей Instagram и собирать данные об их подписчиках и подписках.

  2. По каждому пользователю, который является подписчиком или на которого подписан исследуемый объект нужно извлечь имя, id, фото (остальные данные по желанию). Фото можно дополнительно скачать.

  3. Собранные данные необходимо сложить в базу данных. Структуру данных нужно заранее продумать, чтобы:

  4. Написать запрос к базе, который вернет список подписчиков только указанного пользователя

  5. Написать запрос к базе, который вернет список профилей, на кого подписан указанный пользователь

Решение: Pull Request, каталог с проектом Scrapy

About

GB: Методы сбора и обработки данных из сети Интернет

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages