Понимание того, насколько важна здесь архитектура scrapy. Посмотрите на диаграмму ниже
Spiders
Spiders are custom classes written by Scrapy users to parse responses and extract items (aka scraped items) from them or additional URLs (requests) to follow. Each spider is able to handle a specific domain (or group of domains).
Item Pipeline
The Item Pipeline is responsible for processing the items once they have been extracted (or scraped) by the spiders. Typical tasks include cleansing, validation and persistence (like storing the item in a database).
When you understand the above architecture diagram, Scraper classes are used to scrape the website and item pipeline classes are used to process the items (scraped requests).
There are 2 scenarios here:
- When you get the urls from any database
Here, in order to scrape websites, you need urls of the website. If those urls are stored in any database then it's better to bind the database connection objects to the scraper classes so that those can be fetched dynamically.
- Если вы хотите обработать очищенные элементы - Сохраните данные и т. Д. c ..
Здесь вы в основном привязать объект подключения к базе данных к Item Pipeline, чтобы мы могли напрямую хранить очищенные данные в базе данных.
Как привязка подключений к базе данных к классу Scraper, так и к классу Pipeline является правильной в зависимости от сценария. 1012 * Вопрос 2:
Пул подключений redis / db является предпочтительным?
Да, пул подключений к любой базе данных всегда предпочтительнее.
пул соединений поддерживает обычно устойчивую коллекцию допустимых / открытых соединений, предположим 10. Когда приложению необходимо выполнить запрос или выполнить обновление, оно «заимствует» соединение из пула, «открывая» соединение. Когда это будет сделано, он «закрывает» соединение, которое возвращает его в пул для использования в следующем запросе. Поскольку соединение уже было открыто, никаких накладных расходов на получение соединения не требуется.
Источник: https://qr.ae/pNs8jA