Я пытаюсь почистить сайт электронной коммерции,
пример ссылки: https://www.lazada.sg/products/esogoal-2-in-1-selfie-stick-tripod-bluetooth-selfie-stand-with-remote-shutter-foldable-tripod-monopod-i279432816-s436738661.html?mp=1
Данные отображаются с помощью React, и когда я выполняю утилизацию нескольких ссылок, большая часть данных возвращается как null
, и когда я просматриваю исходный код страницы, я не могу найти фактически HTML, который доступен через элемент inspect, просто JSON внутри тегов Javascript. Я несколько раз тестировал Scrapper Scrapper по тем же ссылкам и данным, которые не были найдены ранее, фактически возвращает содержимое, так что это как-то случайно. Я не могу понять, как я должен очистить этот вид веб-сайта.
Также я использую пул пользовательских агентов и перерывы между запросами.
script = '''
function main(splash, args)
assert(splash:go(args.url))
assert(splash:wait(1.5))
return splash:html()
end
'''
def start_requests(self):
url= [
'https://www.lazada.sg/products/esogoal-tactical-sling-bag-outdoor-chest-pack-shoulder-backpack-military-sport-bag-for-trekking-camping-hiking-rover-sling-daypack-for-men-women-i204814494-s353896924.html?mp=1',
'https://www.lazada.sg/products/esogoal-2-in-1-selfie-stick-tripod-bluetooth-selfie-stand-with-remote-shutter-foldable-tripod-monopod-i279432816-s436738661.html?mp=1',
'https://www.lazada.sg/products/esogoal-selfie-stick-tripod-extendable-selfie-stick-monopod-with-integrated-tripod-and-bluetooth-remote-shutter-wireless-selfie-stick-tripod-for-cellphonecameras-i205279097-s309050125.html?mp=1',
'https://www.lazada.sg/products/esogoal-mini-umbrella-travel-umbrella-sun-rain-umbrella8-ribs-98cm-big-surface-lightweight-compact-parasol-uv-protection-for-men-women-i204815487-s308312226.html?mp=1',
'https://www.lazada.sg/products/esogoal-2-in-1-selfie-stick-tripod-bluetooth-selfie-stand-with-remote-shutter-foldable-tripod-monopod-i279432816-s436738661.html?mp=1'
]
for link in url:
yield SplashRequest(url=link, callback=self.parse, endpoint='render.html', args={'wait' : 0.5, 'lua_source' : self.script}, dont_filter=True)
def parse(self, response):
yield {
'title' : response.xpath("//span[@class='pdp-mod-product-badge-title']/text()").extract_first(),
'price' : response.xpath("//span[contains(@class, 'pdp-price')]/text()").extract_first(),
'description' : response.xpath("//div[@id='module_product_detail']").extract_first()
}