Вот код, который работал для меня. Вы получили ошибку str, потому что не можете использовать response.xpath после строки. Вы должны использовать непосредственно в foor-l oop. Вот код, который я использовал. Вы также можете удалить разрешенные домены.
import scrapy
class ShopSpider(scrapy.Spider):
name = 'shop'
start_urls = ['https://www.redbubble.com/shop/shower-curtains/']
def parse(self, response):
for product in response.xpath("//a[@class='styles__link--2sYi3']"):
product_url = product.xpath(
".//img[@class='styles__image--2CwxX styles__productImage--3ZNPD styles__rounded--1lyoH styles__fluid--3dxe-']/@src").get()
title = product.xpath(".//div[@class='styles__box--206r9 styles__paddingRight-0--fzRHs']/div[@class='styles__textContainer--1xehi styles__disableLineHeight--3n9Fg styles__nowrap--2Vk3A']/span/text()").get()
yield {
"title": title,
"url": product_url
}