Scrapy Splash 错误:放弃重试 504 网关超时

我在使用 scrapy 和 splash 学习时,出现了 504 网关错误,我正在尝试爬取这个https://www.lazada.com.my/

请问您能帮帮我吗?

Splash 在 8050 端口上运行在 Docker 容器中

spider 文件

import scrapy
from scrapy_splash import SplashRequest

class LaptopSpider(scrapy.Spider):
    name = 'laptop'
    allowed_domains = ['www.lazada.com.my']

    def start_requests(self):
        url='https://www.lazada.com.my/shop-laptops/?spm=a2o4k.home.cate_2.2.75f82e7eO7Jbgl'
        yield SplashRequest(url=url)

    def parse(self, response):
        all_rows=response.xpath("//div[@class='_17mcb']/div").getall()
        print(all_rows)
        for row in all_rows:
            title=row.xpath(".//div/div/div[2]/div[2]/a/text()")
            yield{
                'title':title
            }

settings

BOT_NAME = 'lazada'
SPIDER_MODULES = ['lazada.spiders']
NEWSPIDER_MODULE = 'lazada.spiders'
ROBOTSTXT_OBEY = False
SPLASH_URL = 'http://localhost:8050'
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

scrapy crawl lazada

原文链接 https://stackoverflow.com/questions/71146154

点赞
stackoverflow用户8179939
stackoverflow用户8179939

将目标url爬取引起的加载时间过久的问题

目标url加载需要耗费较长的时间。即使在浏览器中测试,你也会发现加载需要花费一段时间才能完全停止旋转。

由此,Splash在页面完全加载完成并返回之前就以超时方式停止了。

你需要进行以下两步来解决此问题。

首先,在启动Splash服务器时,将最大超时值增加如下。

docker run -p 8050:8050 scrapinghub/splash --max-timeout 3600

其次,在爬虫中,可以提供比Splash服务器的最大超时值小的超时值。

yield SplashRequest(url=url, args={"timeout": 3000})
2022-02-17 03:56:48