scrapy splash可以忽略504 HTTP状态吗?

scrapy splash可以忽略504 HTTP状态吗?,scrapy,scrapy-splash,Scrapy,Scrapy Splash,我想放弃javascript加载网页,所以我使用scrapy splash,但有些页面加载时间太长 像这样: 我认为[processUser..]会使速度变慢 有没有办法忽略这504页?因为当我将超时设置为小于90时,会在scrapy shell或Spider中导致504网关错误 当我设置的时间结束时,可以得到结果html代码(只得到200) 使用Splash渲染网页时,基本上是使用web浏览器 当您要求Splash渲染时: 飞溅到 Splash执行所有javascript 2.1 javas

我想放弃javascript加载网页,所以我使用scrapy splash,但有些页面加载时间太长

像这样:

我认为[processUser..]会使速度变慢

有没有办法忽略这504页?因为当我将超时设置为小于90时,会在scrapy shell或Spider中导致504网关错误


当我设置的时间结束时,可以得到结果html代码(只得到200)

使用Splash渲染网页时,基本上是使用web浏览器

当您要求Splash渲染时:

  • 飞溅到
  • Splash执行所有javascript
    2.1 javascript发出一些请求
    2.2有些请求返回50倍代码
  • Splash返回页面数据
  • 不幸的是,Splash现在不支持任何用于阻止javascript请求的自定义规则——它只接收页面并执行浏览器在没有任何插件的情况下可以执行的所有操作:毫无疑问地加载所有内容


    尽管如此,这些50倍的请求不太可能会降低页面加载速度,如果是这样的话,那么这应该不是一个很大的量。

    splash中有一种机制,可以在请求开始加载正文之前中止请求,您可以使用
    splash:on\u response\u headers
    。然而,在您的情况下,这个钩子只能在状态和标题处于时捕获并中止页面,也就是在它完成等待网关超时(504)之后。因此,您可能希望
    splash:on_request
    在请求发送之前中止请求

    function main(splash, args)
        splash:on_request(function(request)
            if request.url:find('processUser') then
                request:abort()
            end
        end)
        assert(splash:go(args.url))
        assert(splash:wait(.5))
        return {
            har = splash:har(),
        }
    end
    
    UPD:另一种可能更好的方法是在任何请求发生之前设置
    splash.resource\u timeout

    function main(splash, args)
        splash.resource_timeout = 3
        ...