Мне нужно передать аргументы из Middleware: spider_opened()
в конвейеры: close_spider()
функции.
Я пишу собственный код, чтобы избежать удаления дублирующихся элементов. Я загружаю уже очищенные данные в модуль Download Middleware, затем проверяю, совпадают ли URL-адрес запроса и элементы DATE с теми, которые находятся в базе данных, и решаю, отбрасывать или обрабатывать запрос. Пока это хорошо работает, но в конце Паук получает только обновленные предметы.
Кроме тех, которые мне нужны, я должен заполнить все уже очищенные предметы. Для этой цели я написал модуль Custom CSV Writer в конвейерах, но не знаю, как передать базу данных, загруженную в модуль Middleware.
Вся идея состоит в том, чтобы:
Загрузка базы данных является модулем промежуточного программного обеспечения
Проверить, соответствуют ли значения URL и DATE базе данных (снова в промежуточном программном обеспечении)
Если URL и DATE совпадают, отбросить запрос
Если URL-адрес совпадает, но DATE не удаляет Элемент из базы данных и не выполняет запрос
Если URL-адрес и ДАТА не совпадают, выполните запрос
Затем из конвейеров я получил доступ к недавно очищенным элементам и могу сохранить их в файле CSV.
Единственное, что осталось, - это хранить неотъемлемые элементы из базы данных в промежуточном программном обеспечении, но я не знаю, как передать их в модуль конвейеров.