Если вы хотите передать дополнительные аргументы в функцию разбора, вы можете сделать это, переопределив метод запросов на запуск по умолчанию. Вы должны переименовать ваш start_urls
в вашем методе init на что-то другое, если вы хотите использовать метод start_requests
, поскольку я переименовываю его в starting_urls
def start_requests(self):
for url in self.starting_urls:
yield Request(
url,
cb_kwargs={'additional_argument': dict_map[url]}
)
def parse(self, response, additional_argument):
# Here you can use that additional_argument
pass
Также для получения URL-адреса в синтаксическом анализе, ResponseОбъект также содержит оригинальный объект запроса. Таким образом, вы можете получить URL запроса по response.request.url
def parse(self, response):
additional_argument = self.dict_map[response.request.url]
Обратите внимание, что я переименовываю start_url в start_urls