Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Проект 12: Парсер книг (Web Scraper) 📚

Консольное приложение для сбора информации о книгах с сайта books.toscrape.com.
Обходит все страницы каталога, собирает название, цену, рейтинг и наличие, сохраняет результат в JSON.

🎯 Что закрепляет

  • Работа с requests (GET-запросы, таймауты, обработка ошибок)
  • Парсинг HTML с BeautifulSoup (поиск по тегам, классам, атрибутам)
  • Рекурсивный обход страниц (пагинация)
  • Формирование URL с urllib.parse.urljoin
  • Сохранение данных в JSON с обработкой ошибок
  • Полноценная обработка исключений (сеть, элементы, файлы)

📋 Функционал

1. Сбор данных с одной страницы

  • Название книги
  • Цена
  • Рейтинг (One — Five)
  • Наличие (In stock / Out of stock)

2. Обход всех страниц

  • Автоматическое определение ссылки «next»
  • Рекурсивный переход до последней страницы
  • Подсчёт номера страницы

3. Сохранение результатов

  • Структура: { "Страница N": { "Название": { "цена": "...", "рейтинг": "...", "наличие": "..." } } }
  • JSON с отступами и поддержкой Unicode

🛡️ Обработка ошибок

  • Сеть: ConnectionError, Timeout, HTTPError
  • Элементы: проверка на None перед обращением
  • Рейтинг: безопасный доступ к атрибуту class
  • Наличие: значение 'unknown', если элемент отсутствует
  • JSON: TypeError, PermissionError, IOError
  • Общий Exception для непредвиденных ситуаций

📝 Пример работы

Подождите идет парсинг...
Данные сохранены

Фрагмент books.json

{
  "Страница 1": {
    "A Light in the Attic": {
      "цена": "£51.77",
      "рейтинг": "Three",
      "наличие": "In stock"
    },
    "Tipping the Velvet": {
      "цена": "£53.74",
      "рейтинг": "One",
      "наличие": "In stock"
    }
  }
}

🧠 Чему научился

  • Делать реальные HTTP-запросы к сайтам
  • Извлекать данные из HTML с помощью BeautifulSoup
  • Строить рекурсивные обходы пагинации
  • Обрабатывать все возможные ошибки (сеть, структура, файлы)
  • Сохранять структурированные данные в JSON
  • Писать код, готовый к использованию на фрилансе

📁 Структура проекта

12_web_parser/
├── main.py       # код парсера
└── README.md     # документация

🚀 Как запустить

# Установить библиотеки (если не установлены)
pip install requests beautifulsoup4

# Запустить
python main.py

📊 Статус

✅ Проект готов