Scrapy 仅获取页面的第 24 个项目

Scrapy gets only 24 first items of page

我尝试了很多方法来抓取宜家页面,我发现在最后一页宜家实际上显示了所有项目。但是,当我尝试抓取宜家产品的最后一页时,它只 returns 我的第 24 个项目(对应于第一页显示的项目。 这是页面的 URL: https://www.ikea.com/fr/fr/cat/lits-bm003/?page=12

这是蜘蛛 :

import scrapy
import pprint

class SpiderSpider(scrapy.Spider):
    name = 'Ikea'
    pages = 9
    start_urls = ['https://www.ikea.com/fr/fr/cat/canapes-fu003/?page=12']

    def parse(self, response):
        data = {}
        products = response.css('div.plp-product-list')
        for product in products:
            for p in product.css('div.range-revamp-product-compact'):
                yield {
                    'Title' : p.css('div.range-revamp-header-section__title--small::text').getall()[0],
                    'Price' : p.css('span.range-revamp-price__integer::text').getall()[0],
                    'Desc' : p.css('span.range-revamp-header-section__description-text::text').getall()[0],
                    'Img' : p.css('img.range-revamp-aspect-ratio-image__image::attr(src)').getall()[0]
                }

Scrapy 的蜘蛛不会 运行 JavaScript(这是浏览器的工作),它只会加载与 cURL 相同的响应内容。

要完全按照您的建议,您需要一个基于浏览器的解决方案,例如Selenium (Python) or Cypress (JavaScript)。或者单独浏览每一页。尝试使用 'headless browser'.

可能有更好的方法来做到这一点,但为了解决您的确切问题,这是预期的答案。