Scrap скрипт получает неверные данные - PullRequest
0 голосов
/ 26 апреля 2020

Я написал сценарий Scrapy, который получает некоторые правильные данные, и через некоторое время он начинает получать неправильные данные, такие как столбец цен, неправильная цена, и столбец img_url, получающий половину правильного URL и половину неправильного. Я решаю эту проблему. Спасибо! вот мой код:

# -*- coding: utf-8 -*-
import scrapy


class CurtainSpider(scrapy.Spider):
    name = 'curtain'
    allowed_domains = ['https://www.redbubble.com/shop']
    #start_urls = ['https://www.redbubble.com/shop/shower-curtains/']
    def start_requests(self):
        yield scrapy.Request(url='https://www.redbubble.com/shop/shower-curtains/', callback=self.parse, headers={
            'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'
        })

    def parse(self, response):
        products = response.xpath("//div[@class='styles__grid--197Ps']/a")
        for product in products:
            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()
            price = product.xpath(".//span[@class='styles__text--NLf2i styles__body--3bpp7 styles__block--3OueG']/strong/span/text()").get()
            img_url = product.xpath(".//div[@class='styles__imageDiv--1zOnW']/div[@class='styles__box--206r9']/div[@class='styles__box--206r9 styles__ratioOuter--AlSwh styles__cover--zzlOp styles__square--3vP1e styles__rounded--1lyoH']/div[@class='styles__box--206r9 styles__ratioInner--KvIFM']/img/@src").get()

            yield {
                'Title' : title,
                'Price' : price,
                'Img_Url'   :   img_url,
                'User-Agent'    : response.request.headers['User-Agent']
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...