Лаб. работа “Сбор данных с помощью веб-скрейпинга”
Лабораторная работа: Сбор данных с помощью веб-скрейпинга
Цель работы
Изучить основные концепции и методы работы с фреймворком Scrapy, включая создание проекта, написание пауков, парсинг данных и сохранение их в файлы.
Задания
Создание виртуальной среды
1.1. Создайте виртуальную среду с помощью
venv
:1.2. Активируйте виртуальную среду:
На Windows:
На macOS и Linux:
1.3. Убедитесь, что виртуальная среда активирована. В командной строке должно появиться
(scrapy_env)
перед приглашением.Установка и настройка Scrapy
2.1. Установите Scrapy:
2.2. Создайте новый проект Scrapy:
Создание паука
3.1. Перейдите в директорию проекта:
3.2. Создайте нового паука для скрейпинга веб-сайта (например, quotes.toscrape.com):
Написание паука
4.1. Откройте файл паука
quotes.py
, созданный в директорииspiders
.4.2. Измените паука, чтобы он собирал цитаты, авторов и теги с сайта:
import scrapy class QuotesSpider(scrapy.Spider): name = "quotes" start_urls = [ 'http://quotes.toscrape.com/page/1/', ] def parse(self, response): for quote in response.css('div.quote'): yield { 'text': quote.css('span.text::text').get(), 'author': quote.css('span small.author::text').get(), 'tags': quote.css('div.tags a.tag::text').getall(), } next_page = response.css('li.next a::attr(href)').get() if next_page is not None: next_page = response.urljoin(next_page) yield scrapy.Request(next_page, callback=self.parse)
Запуск паука
5.1. Запустите паука для сбора данных:
Сохранение данных
6.1. Запустите паука и сохраните данные в файл формата JSON:
6.2. Откройте файл
quotes.json
и проверьте собранные данные.Дополнительные задания
7.1. Модифицируйте паука для сбора дополнительной информации.
7.2. Изучите возможности использования Item Pipelines для постобработки данных перед их сохранением. Реализуйте простую pipeline для очистки или трансформации данных.
7.3. Настройте паука для работы с другими страницами сайта.
Самостоятельные задания
Анализ и логирование данных
1.1. Добавьте в паука логирование, чтобы отслеживать процесс скрейпинга, например, количество собранных цитат или текущую страницу.
1.2. Изучите, как использовать
scrapy.statscollectors
для сбора статистики по работе паука, и реализуйте сбор и вывод основных метрик (например, количество успешных запросов, количество ошибок).Работа с различными форматами данных
2.1. Изучите, как сохранять данные в формате CSV, и модифицируйте паука для сохранения данных в
quotes.csv
.2.2. Реализуйте сохранение данных в базу данных SQLite. Создайте соответствующую таблицу и используйте Scrapy’s
Feed Exporters
для сохранения данных.Оптимизация производительности
3.1. Настройте параллельное выполнение запросов для ускорения скрейпинга. Изучите параметры
CONCURRENT_REQUESTS
иDOWNLOAD_DELAY
вsettings.py
.3.2. Реализуйте механизм повторного выполнения запросов при возникновении ошибок, используя
RetryMiddleware
.Обработка и анализ данных
4.1. Реализуйте функцию для удаления дубликатов данных из собранных цитат.
4.2. Напишите скрипт на Python для простого анализа собранных данных (например, подсчет количества цитат каждого автора, анализ часто встречающихся тегов).
Отчет по работе
- Описание задачи.
- Пошаговое выполнение заданий с кодом и объяснениями.
- Примеры собранных данных.
- Проблемы, с которыми столкнулись, и способы их решения.
- Возможные улучшения и дальнейшие шаги.