python - Scrapy看不到列表

标签 python list scrapy

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

  1. li.缩略图幻灯片
  2. li.thumbnail-slide-active
  3. li.thumbnail-slide.thumbnail-slide-active
  4. li.thumbnail-slide 缩略图-slide-事件

没有任何作用。

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

提前致谢!

最佳答案

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

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

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

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

主图像单独出现:

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

希望对您有帮助。

关于python - Scrapy看不到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53131007/

相关文章:

python - neo4j:删除事务中的节点会导致异常

jquery - CSS 和/或 jQuery 将可点击的小图像添加到多选列表

python - httplib.BadStatusLine : ''

python - 将 Scrapy 作为脚本运行时禁用日志

python - 添加零时奇怪的 numpy.sum 行为

Python:枚举值与命名单元

python - 将字符串列表转换为字典

list - VIM 中的格式化列表

python - 运行命令 "scrapy crawl quotes"时 scrapy 教程中出现无效语法错误

python - 属性错误: 'tuple' attribute has no attribute 'endswith' Python NLTK Lemmatizer