У нас есть конвейер элемента проверки, и теперь мы хотим расширить его так, чтобы одно поле элемента (было только один тип элементов) иногда больше не требовалось.
Это можно сделать с помощью пользовательская настройка паука, но тогда она будет применяться ко всем предметам паука; тем не менее, мы хотим контролировать это отдельно для каждого элемента.
Если бы это было промежуточное ПО для паука, мы бы добавили ключ meta
к запросу, и все было бы хорошо.
Как и сейчас, однако, все, о чем я могу думать, это либо:
- , чтобы добавить мета-поле к самому элементу, чего я очень хотел бы избежать.
- , чтобы преобразовать это в spidermiddleware, который, помимо того, что он не является "обычным" этапом проверки, также потребует перемещения других конвейеров.
Есть ли вообще способ получить запрос элемент приходит также из конвейера элементов?
Общий консенсус в этот связанный вопрос состоит в том, что это невозможно, но я предполагаю, что так и должно быть, потому что в LogFormatter
' s function
def dropped(self, item, exception, response, spider)
у нас есть параметр response
, и когда я выбрасываю элемент из конвейера, я действительно вижу request
внутри этого response
.