如何在div中级联的图像src

时间:2019-07-16 07:45:31

标签: python scrapy pycharm

这是我的xpath:

img =  hxs.xpath("//div[@class='gallery-images']/a//figure[@class = 'gallery-images-item']/img/@src").get()

这是我从中检查此内容的页面的链接: https://www.michaelkors.com/allie-mixed-media-trainer/_/R-US_43T9ALFS3L

我尝试了每种组合,但仍未返回

1 个答案:

答案 0 :(得分:0)

该网站将所有产品详细信息存储在JSON结构中(请参见源中的window.__INITIAL_STATE__),这就是为什么您无法在HTML代码中找到它的原因。此外,每个可用的SKU都有单独的图像(通常都是相同的),在我的解决方案中,我使用的是第一个SKU:

import scrapy
import json


class MichaelKorsSpider(scrapy.Spider):
    name = 'MichaelKors'
    start_urls = ['https://www.michaelkors.com/allie-mixed-media-trainer/_/R-US_43T9ALFS3L']

    def parse(self, response):

        initial_state = response.xpath('//script[contains(., "window.__INITIAL_STATE__ = ")]/text()').re_first(r'window.__INITIAL_STATE__ =\s*(\{.+?\});')
        data = json.loads(initial_state)

        images = []

        for image_url in data["pdp"]["rawJson"]["SKUs"][0]["media"]["images"]:
            images.append("https://michaelkors.scene7.com/is/image/" + image_url)

        print(images)