В рамках задачи был реализован скрипт на Python, который собирает данные с сайта "Quotes to Scrape". Система была разработана для извлечения цитат, авторов цитат, а также дополнительной информации об авторах (дата рождения, место рождения и описание). Все данные были собраны и сохранены в формате JSON, который был выбран для удобства дальнейшего анализа и использования.
Данные были собраны с сайта "https://quotes.toscrape.com/". Сайт предоставляет публично доступную информацию о цитатах и авторах, которые можно извлечь с помощью скриптов. В ходе сбора данных с каждой страницы сайта были извлечены следующие элементы:
- Цитаты — Текст цитаты.
- Авторы — Имя автора цитаты.
- Информация о авторах — Для каждого автора извлекалась информация, включая дату рождения, место рождения и краткое описание.
Сбор данных был организован с использованием Python и популярных библиотек для веб-скрейпинга:
- Requests: Библиотека для выполнения HTTP-запросов к сайту.
- BeautifulSoup: Использовалась для парсинга HTML-страниц и извлечения нужных данных из полученного HTML-кода.
Алгоритм работы:
- Отправляется запрос на главную страницу сайта, извлекаются цитаты и ссылки на страницы авторов.
- Для каждого автора отправляется запрос на его страницу для получения информации (дата рождения, место рождения, описание).
- Данные о цитатах и авторах сохраняются в список, который в конце записывается в файл в формате JSON.
-
Структура страницы
- Страница сайта состоит из различных элементов, каждый из которых выполняет определенную функцию для представления цитат и информации об их авторах. Например, цитаты представлены в виде
<span>с классомtext, в то время как информация об авторе (имя, описание и дата рождения) размещена в разных элементах на странице. - На странице цитат, каждый автор указан с помощью тега
<small class="author" itemprop="author">, что позволяет выделить имя автора в HTML. Ссылка на подробную информацию об авторе доступна через тег<a href="/author/имя-автора">(about)</a>, что позволяет перейти на страницу автора.
Страница с подробной информацией о каждом авторе содержит разделы:
- Имя автора:
<h3 class="author-title">. - Дата рождения:
<span class="author-born-date">. - Место рождения:
<span class="author-born-location">. - Описание автора:
<div class="author-description">. Эти данные используются для сбора подробной информации о каждом авторе цитат.
- Страница сайта состоит из различных элементов, каждый из которых выполняет определенную функцию для представления цитат и информации об их авторах. Например, цитаты представлены в виде
-
Типы данных:
- Цитаты: строки текста, которые являются основным контентом на странице.
- Информация о авторе:
- Имя автора: строка, которая используется как идентификатор автора.
- Дата рождения: строка, содержащая информацию о дате (например, "March 14, 1879").
- Место рождения: строка, содержащая название города или страны (например, "in Ulm, Germany").
- Описание: длинный текст, описывающий биографию автора, его достижения и философию.
-
Python — выбран в качестве основного языка программирования из-за своей популярности в области анализа данных и обработки веб-страниц. Он предоставляет удобные библиотеки для парсинга и обработки данных.
-
Requests — эта библиотека была выбрана для выполнения HTTP-запросов из-за своей простоты в использовании и широкого распространения. Она позволяет легко отправлять запросы и получать ответы от серверов.
-
BeautifulSoup — выбрана для парсинга HTML-страниц, так как она предоставляет мощные и гибкие средства для извлечения данных из веб-страниц. Она является одной из самых популярных библиотек для скрейпинга благодаря своей простоте и эффективности в парсинге.
-
JSON — для сохранения данных был выбран формат JSON, так как он является универсальным и широко используемым форматом для обмена данными. Он удобен для хранения структурированных данных и дальнейшей обработки в других программах.
-
Time.sleep() — была добавлена пауза между запросами, чтобы снизить вероятность блокировки IP-адреса и соблюдать этические принципы при веб-скрейпинге.
-
Клонируйте репозиторий:
git clone https://github.com/athzero/project_scraping.git
-
Установите необходимые зависимости:
pip install -r requirements.txt
-
Запустите скрипт для сбора данных:
python scraping.py
Это тестовое задание так пока без лицензией.