scrapy splash可以忽略504 HTTP状态吗?
我想放弃javascript加载网页,所以我使用scrapy splash,但有些页面加载时间太长 像这样: 我认为[processUser..]会使速度变慢 有没有办法忽略这504页?因为当我将超时设置为小于90时,会在scrapy shell或Spider中导致504网关错误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
当我设置的时间结束时,可以得到结果html代码(只得到200) 使用Splash渲染网页时,基本上是使用web浏览器 当您要求Splash渲染时:
2.1 javascript发出一些请求
2.2有些请求返回50倍代码
尽管如此,这些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
...