Мультипроцессорный парсер кинопоиска (актуально на 06/06/2023).
Спарсенные данные преобразуются
в фикстуры для Django-приложения со следующией схемой БД:
git clone https://github.com/coryphoenixxx/kinopoisk_top500_parser.git
- создать виртуальное окружение
pip install -r requirements.txt
- скопировать файл
.env.default
, переименовать его в.env
и настроить параметры:PROCESS_NUM
— количество параллельных процессов (по дефолту = количеству ядер процессора хоста)MOVIES_LIST_NUM
— количество страниц-списков с фильмами, которые нужно парситьSTILLS_NUM
— количество кадров, которые нужно спарситьSCRAPE_LIMIT_COUNT
— ограничение количества посещенных страниц, после которого нужно сделать паузуSCRAPE_LIMIT_SLEEP
— пауза в секундах
- !!! если запускаете через IDE, то исключить папку
data
из индексирования, иначе IDE будет сильно тормозить работу скрипта python __main__.py
- при первом запуске нужно будет решить капчу Яндекса для каждого процесса
- во время работы скрипта окна вебдрайверов будут иногда перезагружаться — это нормально
- спарсенные данные будут складироваться в папку
data
- после скрипт предложит подкорректировать криво заполненные страны
- результат работы (
data/fixtures.json
и папкаdata/media
) нужно скопировать в django-проект (на уровень сmanage.py
) и загрузить фикстуры в БД:python manage.py loaddata fixtures.json
В 8 процессов на intel core i7-4790K скрипт отрабатывает за 6-10 минут.
- python 3.10+
- multiprocessing
- aiohttp
- Selenium
- Beautiful Soup
- есть мнение, что Selenium немного быстрее работает с мультипоточкой