Scrapy spla sh работает неправильно при поиске предметов, загруженных JS - PullRequest
5 голосов
/ 11 января 2020

Я использую scrapy with scrapy spla sh, чтобы получить данные из некоторых URL-адресов, таких как URL продукта или URL продукта 2 .

У меня есть Lua Сценарий со временем ожидания и возвращаю HTML:

script = """
            function main(splash)
              assert(splash:go(splash.args.url))
              assert(splash:wait(4))
              return splash:html()
            end
"""

, затем я выполняю его.

yield SplashRequest(url, self.parse_item, args={'lua_source': script},endpoint='execute')

Отсюда я нужно 3 элемента, это 3 разных цены товара 3 загружены с JS.

prices

У меня есть xpath, чтобы получить 3 элемента , Но проблема в том, что иногда это работает, а иногда не работает

    price_strikethrough = response.xpath('//div[@class="price-selector"]/div[@class="prices"]/span[contains(@class,"active-price strikethrough")]/span[1]/text()').extract_first() 
    price_offer1 = response.xpath('//div[@class="price-selector"]/div[@class="prices"]/div[contains(@class,"precioDescuento")][1]/text()').extract_first()
    price_offer2 = response.xpath('//div[@class="price-selector"]/div[@class="prices"]/div[contains(@class,"precioDescuento")][2]/text()').extract_first()

Я не знаю, что еще нужно сделать, чтобы это работало должным образом. Я попытался изменить значения ожидания, но это то же самое. Иногда это работает нормально, иногда я не получаю данные. Как я могу убедиться, что всегда получаю нужные мне данные?

1 Ответ

0 голосов
/ 16 января 2020

В вашем подходе нет ничего плохого, но проблема, похоже, есть на сайте. Для расчета цены по сайту требуется переменное время, вам нужно обновить время в вашем lua_script, оно должно быть около 7-8 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...