Web-scraping: сбор данных из баз данных и интернет-источников

Материал из MathINFO
Перейти к навигации Перейти к поиску

Это страница практикума «Web-scraping: сбор данных из баз данных и интернет-источников», читаемого на программе «Психология» в 2024/2025 учебном году.

Практические занятия ведёт: Тамбовцева Алла Андреевна.

Правила игры

  • Формула оценки: 0.5 × ДЗ + 0.5 × Проект, программа курса.
  • Домашние задания, сданные после срока, оцениваются с использованием понижающих коэффициентов: опоздание в пределах часа – штраф 10% от полученной оценки, в пределах суток – штраф 30%, в пределах недели – штраф 70%. Домашние задания, сданные через неделю после указанного срока и позже, не принимаются и не оцениваются.

Среда для работы

Если вы активно работаете в Python и используете среду, отличную от Jupyter Notebook (Google Colab), например, PyCharm или Visual Studio, вы можете работать в привычной среде и сдавать задания в виде исполняемых файлов с расширением .py. Мы будем использовать на занятиях среду Jupyter Notebook, поскольку она более удобна для пошагового разбора кода и установки библиотек, то есть преимущественно работать с файлами с расширением .ipynb. Материалы курса и задания дублируются на Github, знакомство с ними не предполагает использования определенной среды, файлы свободно отображаются в браузере.

Если вы успели «удалить весь Python» и ранее работали только в Jupyter Notebook (Google Colab), информация далее для вас :) Перед занятиями необходимо установить дистрибутив Anaconda (скачать можно здесь), который включает в себя интерпретатор языка Python, библиотеки для обработки, анализа и визуализации данных, а также среду для работы Jupyter Notebook. Также есть возможность работать в Jupyter Notebook онлайн, используя ресурс Google Colab (для создания и редактирования файлов нужен аккаунт Gmail).

Подробности по установке и работе – см. ниже в неделе 0.

Материалы курса

Неделя 0. Напоминания про Python и Jupyter Notebook

Для подготовки к работе на курсе можно ознакомиться со следующими материалами онлайн-курса:

А также с материалами по работе в Jupyter Notebook и Google Colab:

Если нужно вспомнить базовые темы из Python, можно ознакомиться с материалами курса (1 модуль, другая программа).

Неделя 1. Знакомство с HTML. Поиск по тэгам

  • Язык HTML как язык разметки. Устройство веб-страниц (слайды).
  • Практикум 1. Введение в парсинг с BeautifulSoup: поиск по тэгам (psy-practice01.ipynb), решения (ipynb).

Дополнительно:

Неделя 2. Парсинг с HTML. Поиск тэги и атрибуты

  • Практикум 2.1. Парсинг с BeautifulSoup: тэги и атрибуты (psy-practice02.ipynb), решения (ipynb).
  • Практикум 2.2. Форматирование строк и генерация ссылок (psy-practice02-ctd.ipynb), решения (ipynb).

Дополнительно:

  • Полезные готовые палитры цветов для графиков: coolors.co

Неделя 3. Знакомство с форматом JSON

  • Разбираем практикум 2.2 (см выше).
  • Практикум 3. Формат JSON и его обработка в рамках блока кода JavaScript (psy-practice03.ipynb), решения (ipynb).

Неделя 4. Регулярные выражения. Введение в Selenium

  • Регулярные выражения: краткий обзор возможностей (regex-intro.ipynb).
  • Практикум 3*. Формат JSON и его обработка в рамках блока кода JavaScript: продолжение (psy-practice03-ctd.ipynb), решения (ipynb).
  • Практикум 4. Введение в управление браузером с Selenium (psy-practice04.ipynb).

Дополнительно:

  • Статья про регулярные выражения в Python и модуль re.
  • Примеры работы с текстовыми столбцами в pandas (ipynb, данные).

Неделя 5. Управлением браузером с Selenium и скачивание файлов с requests

  • Практикум 5. Управление браузером с Selenium: продолжение psy-practice05.ipynb, решения (ipynb).

Неделя 6. Управлением браузером с Selenium и приложения streamlit

Streamlit & Selenium:

Наше приложение app.py:

  • Функция my_main.py, функция my_main_upd.py.
  • Необходимые фрагменты кода: 26-02.txt.
  • Исполняемый файл с приложением app.py.
  • Файл с полным кодом в Google Colab: ipynb.

Неделя 7. Управлением браузером с Selenium. Работа с API ВКонтакте

Домашние задания

Проект

Описание и критерии

  • Файл [1] с описанием проекта.
  • Дедлайн: 30 марта 23:59, выполненные проекты высылаются на почту преподавателя.

Полезные материалы для проекта

Интерактив и интерфейс

  • Виджеты для взаимодействия с пользователем: документация библиотеки ipywidgets.

Обработка текста и облака слов

  • Видеозаписи: предварительная обработка текста (01), облако слов (02), добавление маски (03).
  • Подробный конспект с решениями (ipynb).