У меня проблемы с извлечением кода UP C на веб-странице BestBuy. Когда я извлекал код UP C, я заметил, что UP C будет перемещать строки на каждой странице продукта, что заставит меня извлечь неправильные данные.
Вот примеры перемещения UP C строк на веб-странице продукта.
Продукт 1: Показывает селектор CCS .row:nth-child(8) .col-xs-6.v-fw-regular
Продукт 2: Показывает селектор CCS .row:nth-child(12) .col-xs-6.v-fw-regular
Вот два веб-сайта для проверки.
https://www.bestbuy.com/site/targus-safeport-protective-case-for-apple-9-7-ipad-5th-gen--6th-gen-and-9-7-ipad-pro-pink/6257900.p?skuId=6257900
https://www.bestbuy.com/site/belkin-dual-band-ac-gigabit-router-black/4070013.p?skuId=4070013
Это мой код.
import scrapy
from ..item import QuotestutorialItem
class QuotesSpider(scrapy.Spider):
name = 'bestbuy'
start_urls = ['https://www.bestbuy.com/site/promo/newly-discounted-outlet-products']
def parse(self, response):
products = response.css('div.sku-title')
for product in products:
item = QuotestutorialItem()
item['title'] = product.css('div.sku-title a::text').extract()
another_page = product.css('div.sku-title a::attr(href)').get()
if another_page:
yield response.follow(another_page, callback=self.parse_price, meta={'item': item})
else:
yield item
def parse_price(self, product):
item = product.meta['item']
item['price'] = product.css('.priceView-layout-large .priceView-customer-price span::text').extract()[1]
item['upc'] = product.css('.row:nth-child(10) .col-xs-6.v-fw-regular::text').extract()
yield item