вместо for i in range(len(urls)): yield scrapy.Request( url=response.urljoin(urls[i]) , callback=self.parse_productpage )
можно написать yield scrapy.follow_all(urls, , callback=self.parse_productpage)
?
а еще, может быть, что ты учился/учишься по какому-то древнему тутору, особенно если там встречается extract_first и extract, лучше на оффсайте почитать туториал, они начинают с простого, а в конце доходят и до follow/follow_all, показывая что так проще и тупо меньше писать кода https://docs.scrapy.org/en/latest/intro/tutorial.html
а еще, может быть, что ты учился/учишься по какому-то древнему тутору, особенно если там встречается extract_first и extract, лучше на оффсайте почитать туториал, они начинают с простого, а в конце доходят и до follow/follow_all, показывая что так проще и тупо меньше писать кода https://docs.scrapy.org/en/latest/intro/tutorial.html
Да, полностью я прочитал только старую документацию