В моем пауке я получаю свои startURL из файла excel.
Здесь я пытаюсь почистить различные варианты обуви, которые я получаю с сайта Amazon.Сначала я чищу обычную обувь, например, Nike Woman Shoe, и, попав на эту страницу, я получаю все варианты (размер и цвет обуви).
Что-то вроде этой страницы
https://www.amazon.com/gp/product/B01F2M4EUM?pf_rd_p=1581d9f4-062f-453c-b69e-0f3e00ba2652&pf_rd_r=97H1JYZTD1M7YN7GRJW2
На этой странице я получаю каждый вариант с каждым кодом продукта, связанным с вариантом, но в этом URL-адресе я не могу просмотреть цену и изображения, потому что эти данные появляются только при выборе определенного размера обуви иcolor.
То, что я сделал в своей попытке очистить цены, отформатировало ссылку amazon, из-за которой появляются цены (пробуя ссылки из amazon, я обнаружил, что это сработало)
Например, изЭтот URL: https://www.amazon.com/gp/product/B01F2M4EUM?pf_rd_p=1581d9f4-062f-453c-b69e-0f3e00ba2652&pf_rd_r=97H1JYZTD1M7YN7GRJW2
Я вручную выбираю размер и цвет и получаю:
https://www.amazon.com/gp/product/B0187Q0XWS?pf_rd_p=1581d9f4-062f-453c-b69e-0f3e00ba2652&pf_rd_r=97H1JYZTD1M7YN7GRJW2&th=1&psc=1
Этот URL я могу отформатировать (вставив другой код продукта)и цена появляется.
Извините за длинное объяснение, просто пытаюсь быть как можно более информативным.
Мой паук выглядит так:
def parse(self,response):
variationValues = re.findall(r'variationValues\" : ({.*?})', ' '.join(script))[0]
asinToDimensionIndexMap = re.findall(r'asinToDimensionIndexMap\" : ({.*})', ' '.join(script))[0]
variationValuesDict = json.loads(variationValues)
asinToDimensionIndexMapDict = json.loads(asinToDimensionIndexMap)
productKeys = asinToDimensionIndexMapDict.keys()
for key in productKeys:
numeroTalle = asinToDimensionIndexMapDict[key][0]
numeroColor = asinToDimensionIndexMapDict[key][1]
clothesAmz_item['codigoGenericoProducto'] = codigoUUID
clothesAmz_item['codigoEspecificoProducto'] = key
clothesAmz_item['nombreProducto'] = response.xpath('normalize-space(//span[contains(@id, "productTitle")]/text())').extract()
clothesAmz_item['urlProducto'] = 'https://www.amazon.com/gp/product/{}?pf_rd_p=1581d9f4-062f-453c-b69e-0f3e00ba2652&pf_rd_r=48QP07X56PTH002QVCPM&th=1&psc=1'.format(key)
clothesAmz_item['talleProducto'] = variationValuesDict["size_name"][numeroTalle]
clothesAmz_item['modeloProducto'] = variationValuesDict["color_name"][numeroColor]
yield clothesAmz_item
Итак, что яхочу сделать, вместо того, чтобы датьпункт, проанализируйте URL-адрес, который я получил (urlProducto), чтобы я мог получить цену варианта
Я пытался сделать что-то вроде этого
yield Request(urlProducto, callback = self.parse_specific)
def parse_specific(self,response):
clothesAmz_item['precioProducto'] = response.xpath('//span[contains(@id, "priceblock")]/text()'.strip()).extract()
yield clothesAmz_item
При этом ничего не происходит, вконсоль Я вижу, как мой паук проходит через startURL, которые я получил из файла, но данные не собираются.
Я хотел бы добавить, что если я запускаю первого паука, которого я написал по этому вопросу,Программа работает просто отлично, но я не могу получить индивидуальные цены
Есть идеи, что происходит?
items.py
class ClothesItem(scrapy.Item):
#DatosProducto
codigoGenericoProducto = scrapy.Field()
codigoEspecificoProducto = scrapy.Field()
categoriaProducto = scrapy.Field()
nombreProducto = scrapy.Field()
precioProducto = scrapy.Field()
urlProducto = scrapy.Field()
talleProducto = scrapy.Field()
modeloProducto = scrapy.Field()
#Imagenes
img0Producto = scrapy.Field()
img1Producto = scrapy.Field()
img2Producto = scrapy.Field()
img3Producto = scrapy.Field()
img4Producto = scrapy.Field()
img5Producto = scrapy.Field()
pass
РЕДАКТИРОВАТЬ: добавлены items.py и болеекод паука.Я не получаю ошибок при запуске программы.Программа работает нормально, пока я не добавлю запрос. (Url, callback = parse_specific) часть.