Pull to refresh

Comments 12

Здравствуйте, не совсем понятно кто адресат данной статьи. Если для перехода от парсинга "для детей" к парсингу "для взрослых" - то совсем "галопом по европам". Не уверен что можно воспроизвести рабочий вариант следуя шагам описанным выше. Детализации не хватает на мой взгляд. Но в целом - спасибо, это действительно шаг вперёд в данной сфере.

1) Адресаты - программисты, которые хотят научиться разрабатывать сложные парсеры (не просто скрипт, а полноценное веб-приложение с рест-апи, базой данных и асинхронными задачами)

2) "совсем галопом по европам" - согласен, что в статье раскрыты не все фишки, но главная цель статьи - это пошаговое руководство по созданию инфраструктуры для парсинга

3) Рабойчий вариант 100 % можно воспроизвести, так как шаг за шагом записывал свои действия))

Спасибо за фидбек)

Это уже не детсад, но и не энтерпрайз никаким боком. В школе как минимум учат Scrapy.

Статья не про Scrapy, Selenium и подобные библиотеки, а про инфраструктуру для парсинга (интерфейс, постановка задач, хранение данных)

Поддержу комментарий выше про Scrapy. Это очень удобный фреймворк, в котором уже о многом позаботились за вас. Формат данных, ретраи, прокси... Стоит того, чтобы раз его изучить и пользоваться.

У меня была практика с подобной архитектурой как в статье, но под нагрузкой она легла. Каждые новые 16 воркеров Celery обходились в несколько сотен долларов из-за HIPAA compliance хостинга. В итоге всё переписал на aiohttp и сократил затраты примерно на порядок.

Круто, спасибо! А есть способ заставить Django делать парсинг одной странички каждые 5 минут? Тут видимо какой-то таймер должен быть, который через API заставляет работать Django, но я не пойму как такое реализовать

Celery позволяет запускать задачи с помощью планировщиков, таких как crontab в Linux.

Пример:

from celery.schedules import crontab

CELERY_BEAT_SCHEDULE = {
    'monday-task': {
        'task': 'myproject.apps.tasks.task_name',
        'schedule': crontab(day_of_week=1, hour=1)
    },
}

А вы Django используете только ради админки или есть еще плюсы?

Плюсы использования Django:
1) Готовые библиотеки для создания Rest API

2) Возможность описывать модель данных через Django ORM

3) Готовая админка

ну промышленным парсингом тут и не пахнет если честно. Мы чуть более продвинутую версию подобного решения как в статье использовали для mvp/проверки теории, только парсили не html, а restapi, по ключам с ретраями, отзывом и перезапросом ключей.

В итоге загнулись на 5М задач в один момент времени.Дальше начало разваливаться буквально всё, селери жрет много ресурсов, rabitmq который пришел на замену редиса стал жрать сотни гигов диска, джанга перестала переваривать такой rps входящих данных

А сейчас переписываем на реально Ынтырпрайз решение, circular breaker, бесконечный перезапуск пайплайнов, когда последняя задача запускает первую, отзыв ключей нормальный, обработки ошибок, выкинули джангу, и еще очень много всяких нюансов.

Отличный пост! Неплохо было бы еще рассказать про скрепи, например самые тяжелые случаи — новостные сайты, например...

Sign up to leave a comment.

Articles