Scrapy 看不到列表

Scrapy can't see a list

我正在尝试抓取网站的特定页面 (https://www.johnlewis.com/jaeger-wool-check-knit-shift-dress-navy-check/p3767291) 以适应 Scrapy 及其功能。但是,我无法让 Scrapy 看到包含轮播缩略图的 'li'。我的 parse 函数目前如下所示:

def parse(self, response):
    for item in response.css('li.thumbnail-slide'):
        #The for loop works for li.size-small-item
       print("We have a match!")

无论什么Scrapy都不是"seeing" li。我已经尝试在 scrapy shell 中查看页面以检查 Scrapy 是否可以看到图像并且它们是否显示在响应中(所以我假设 Scrapy 肯定可以看到 list/images 在列表)。我已经尝试了替代列表并且我有一个不同的列表可以工作(根据代码中的注释)。 我唯一的想法是轮播可能会加载 JavaScript / AJAX 但我不太确定。我知道如果列表 class 是从 "li.thumbnail-slide" 到 "li.thumbnail-slide thumbnail-slide-active" 的选定图像,那么列表会发生变化,但是,我在我的脚本中尝试了以下操作但无济于事:

  1. li.thumbnail-幻灯片
  2. li.thumbnail-幻灯片活动
  3. li.thumbnail-slide.thumbnail-幻灯片活动
  4. li.thumbnail-幻灯片缩略图-幻灯片-活动

没有任何效果。

有人对我可能做错的地方有什么建议吗?或者建议任何可能有帮助的进一步阅读?

提前致谢!

你的假设是正确的,元素在那里,但并不完全在你认为的位置。

为了轻松检查某个元素是否是响应 html 的一部分并且未被 javascript 加载,我通常建议使用 browser plugin to disable javascript.

如果您想要图片,它们仍然是 html 响应的一部分,您可以通过以下方式获取它们:

response.css('li.product-images__item')

主图单独出现:

response.css('meta[itemprop=image]::attr(content)')

希望对你有所帮助。