在动态加载的网站上抓取图像 SRC 值

问题描述 投票:0回答:0

我正在写一个蜘蛛来抓取以下网站:

https://bananarepublic.gap.com/browse/category.do?cid=28660&nav=meganav%3AMen%3AMen%27s%20Clothing%3ASweaters#department=75

我正在尝试抓取每个标签的“src”值,最终目标是抓取产品图片。

我正在使用 Splash 运行 Scrapy,我正在使用 Docker。我在终端中运行两个窗口:一个用于激活 Docker,另一个用于我用来运行蜘蛛的 VirtualEnv。

我已经确保在运行之前清除容器,并且我已经运行了命令:

$ docker run -p 8050:8050 -rm scrapinghub/splash

我已经根据Scrapy和Splash网站上的文档更改了蜘蛛中其他代码文件中的设置/代码。

这是我到目前为止尝试过的:

from scrapy_splash import SplashRequest as SplashRequest

class BR_Images(scrapy.Spider):
    name = 'BR_Spider'

    def start_requests(self):
        start_url = 'https://bananarepublic.gap.com/browse/category.do?cid'\
                     '=28660&nav=meganav%3AMen%3AMen%27s%'\
                     '20Clothing%3ASweaters#department=75'

        for url in start_url:
            yield SplashRequest(url=start_url, callback=self.parse)
            
    def parse(self, response):
        grid = response.css('section::attr("Product.Grid")').getall()
        for image in grid:
            response.css('img::attr(src)').get()
            yield {"src": image}

日志显示 (200) 输出并表示该网站已被抓取:

2023-03-27 20:52:23 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://bananarepublic.gap.com/browse/category.do?cid=28660&nav=meganav%3AMen%3AMen%27s%20Clothing%3ASweaters#department=75 via http://localhost:8050/render.html> (referer: None)

然而,实际上什么也没有返回。

我试过只抓取一个产品,也试过抓取网站上的所有产品。都没有返回期望的结果。

我需要做什么来抓取图像 SRC 值?

python scrapy css-selectors web-crawler
© www.soinside.com 2019 - 2024. All rights reserved.