Scrapy看不到列表

时间:2018-11-03 11:47:35

标签: python list scrapy scrapy-spider

我正在尝试抓取网站(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都没有“看到”李。我试过在一个抓痒的外壳中查看该页面,以检查Scrapy是否可以看到图像,并且它们是否在响应中显示(因此,我假设Scrapy肯定可以看到列表中的列表/图像)。我尝试了替代列表,但有另一个列表可以使用(根据代码中的注释)。 我唯一的想法是轮播可能会加载JavaScript / AJAX,但我不太确定。我确实知道,如果列表类是从“ li.thumbnail-slide”到“ li.thumbnail-slide thumbnail-slide-active”的选定图像,则列表类将更改,但是,我在脚本中尝试了以下操作:

  1. li.thumbnail-slide
  2. li.thumbnail-slide-active
  3. li.thumbnail-slide.thumbnail-slide-active
  4. li.thumbnail-slide thumbnail-slide-active

什么都没有。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

您的假设是正确的,元素存在,但不完全是您认为的位置。

为方便地检查元素是否为响应html的一部分并且未被javascript加载,我通常建议使用browser plugin to disable javascript

如果需要图像,它们仍然是html响应的一部分,则可以通过以下方式获得它们:

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

主图像单独显示:

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

希望对您有帮助。