Как добавить промежуточное программное обеспечение в конкретного паука вместе с теми, которые установлены в settings.py?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить промежуточное программное обеспечение в конкретного паука вместе с теми, которые установлены в settings.py?

Сообщение Anonymous »

В файле settings.py для всех пауков включены определенные промежуточные программы.
Как добавить еще одно промежуточное ПО для одного конкретного паука вместе со всеми программами в settings.py ?
Предположим, settings.py — это:

Код: Выделить всё

DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.CustomDownloaderMiddleware1': 543,
'myproject.middlewares.CustomDownloaderMiddleware2': 544,
}
Если я устанавливаю это промежуточное программное обеспечение через custom_settings в своем пауке, то все остальные, установленные в settings.py, игнорируются.
Я попробовал

Код: Выделить всё

class MySpider(Spider):
name = 'my_spider'

def __init__(self, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
settings = get_project_settings()

# Get existing middlewares
middlewares = settings.get('DOWNLOADER_MIDDLEWARES', {})

# Append or update your additional middleware
middlewares['myproject.middlewares.MyAdditionalMiddleware'] = 550

# Apply it to the spider's settings
self.custom_settings = {
'DOWNLOADER_MIDDLEWARES': middlewares
}

def start_requests(self):
# Spider logic here
pass
и

Код: Выделить всё

from scrapy.spiders import Spider
from scrapy.utils.project import get_project_settings

class MySpider(Spider):
name = 'my_spider'

@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = super(MySpider, cls).from_crawler(crawler, *args, **kwargs)

# Get the global settings
settings = crawler.settings

# Get the existing middlewares
middlewares = settings.get('DOWNLOADER_MIDDLEWARES', {}).copy()

# Append or update your additional middleware
middlewares['myproject.middlewares.MyAdditionalMiddleware'] = 550

# Update the spider's settings for this instance
spider.custom_settings = {
'DOWNLOADER_MIDDLEWARES': middlewares
}

return spider

def start_requests(self):
# Spider logic here
pass
Но MyAdditionalMiddleware не активирован в моем пауке.
Примечание
Приведенные выше коды были созданы ChatGpt https://chatgpt.com/share/6710b8b3-eda8 ... 244501475b

Подробнее здесь: https://stackoverflow.com/questions/790 ... in-setting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»