Как использовать Rabbitmq или Kafka для масштабирования Scrapy spider, который принимает user_id в качестве входных данных и получает соответствующие URL-адреса из базы данных?

#python #scrapy #scrapyd #scrapy-pipeline #scrapy-shell

#python #scrapy #scrapyd #scrapy-конвейер #scrapy-shell

Вопрос:

Я создал scrapy spider, который принимает user_id в качестве аргумента командной строки и получает URL-адреса из базы данных. Теперь я хочу, чтобы мое приложение было масштабируемым.

Тем временем я просматривал некоторые решения, представленные в Интернете, но не все в точности соответствуют моим требованиям, поскольку в некоторых предлагается передать кучу URL-адресов в scrapy и выполнить очистку, а в других предлагается использовать корневой URL-адрес и оставить все в Scrapy, но мой вариант использования совершенно другой. Я ищу подход здесь.

Вместо распространения URL-адресов, если бы я мог распространять идентификаторы клиентов среди пауков, это тоже было бы прекрасно.

Ответ №1:

Для этого вы могли бы использовать облако Scrapinghub. Scrapy spiders работают с ним «из коробки», и вы могли бы использовать его Collection API для сохранения вашего user_id для использования пауком.

Существует бесплатный уровень, если вы хотите его протестировать.

Но если вы хотите попробовать автономное решение, вы могли бы попробовать Frontera

Frontera — это платформа для обхода веб-страниц, состоящая из границ обхода и примитивов распространения / масштабирования, позволяющая создавать крупномасштабный онлайн-поисковый робот.

Frontera заботится о логике и политиках, которым следует следовать во время обхода. Он хранит и расставляет приоритеты ссылок, извлеченных сканером, чтобы решить, какие страницы посетить следующими, и способен выполнять это распределенным образом.

Основные функции

  • (…)

  • Встроенные шины сообщений Apache Kafka и ZeroMQ.