Web-scraping: сбор данных из баз данных и интернет-источников
Это страница практикума «Web-scraping: сбор данных из баз данных и интернет-источников», читаемого на программе «Психология» в 2024/2025 учебном году.
Практические занятия ведёт: Тамбовцева Алла Андреевна.
Содержание
- 1 Правила игры
- 2 Среда для работы
- 3 Материалы курса
- 3.1 Неделя 0. Напоминания про Python и Jupyter Notebook
- 3.2 Неделя 1. Знакомство с HTML. Поиск по тэгам
- 3.3 Неделя 2. Парсинг с HTML. Поиск тэги и атрибуты
- 3.4 Неделя 3. Знакомство с форматом JSON
- 3.5 Неделя 4. Регулярные выражения. Введение в Selenium
- 3.6 Неделя 5. Управлением браузером с Selenium и скачивание файлов с requests
- 3.7 Неделя 6. Управлением браузером с Selenium и приложения streamlit
- 3.8 Неделя 7. Управлением браузером с Selenium. Работа с API ВКонтакте
- 4 Домашние задания
- 5 Проект
Правила игры
- Формула оценки: 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.
- Видео. Первая программа, задачи для тренировки.
А также с материалами по работе в Jupyter Notebook и Google Colab:
- Запуск Jupyter без Anaconda Navigator (инструкция).
- Работа в Jupyter Notebook (видео), отличия Google Colab от Jupyter (видео).
- Markdown: больше про Markdown, знакомство с Jupyter Notebook и Markdown (читать, ipynb).
Если нужно вспомнить базовые темы из 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:
- Документация библиотеки streamlit.
- Инструкция по установке, импорту и проверке streamlit.
- Инструкция по запуску приложения app.py локально и из Google Colab.
- Инструкция по запуску браузера через Selenium в Google Colab
Наше приложение app.py:
- Функция my_main.py, функция my_main_upd.py.
- Необходимые фрагменты кода: 26-02.txt.
- Исполняемый файл с приложением app.py.
- Файл с полным кодом в Google Colab: ipynb.
Неделя 7. Управлением браузером с Selenium. Работа с API ВКонтакте
- Практикум 7.1. Управление браузером с Selenium: скачивание файлов (psy-practice07-01.ipynb), решения (ipynb).
- Практикум 7.2. Управление браузером с Selenium: скроллинг (psy-practice07-02.ipynb), решения (ipynb).
- Практикум 8. Работа с API ВКонтакте: собираем посты со стены и комментарии (psy-practice08.ipynb), решения (ipynb).
- Документация API ВКонтакте, инструкция по получению токена доступа.
Домашние задания
- Домашнее задание 1, дедлайн 29 января 13:00.
- Домашнее задание 2, дедлайн 5 февраля 13:00.
- Домашнее задание 3, дедлайн 24 февраля 23:59.
- Домашнее задание 4*, дедлайн 26 марта 23:59.
Проект
Описание и критерии
- Файл [1] с описанием проекта.
- Дедлайн: 30 марта 23:59, выполненные проекты высылаются на почту преподавателя.
Полезные материалы для проекта
Интерактив и интерфейс
- Виджеты для взаимодействия с пользователем: документация библиотеки ipywidgets.
Обработка текста и облака слов
- Файлы для работы: stopwords-ru.txt, guitar.jpeg, text-practice.ipynb, сайт Freepik как источник изображений.
- Подробный конспект с решениями (ipynb).