如何保存飞溅饼干

How to keep splash cookies

我目前正在尝试抓取一个网站并尝试在抓取时保持登录状态。不幸的是,据我所知,每次启动时启动都会重置 cookie。我正在使用带有 scrapy 的 splash 来抓取 javascript 的网站。我的问题是:如何防止我的 cookie 被重置?

自己在网上搜索解决方案后,我知道它与 lua 脚本或 cookie 中间件有关,但我不知道如何使用它们。如果有人可以提供帮助,那就太好了。所有谈论这个的网站都不清楚,所以请尽可能清楚。

是的,您可以在 lua 脚本中设置 cookie 和 return cookie。如果登录页面和抓取页面使用相同的脚本,你的脚本应该是这样的:

function main(splash)
    splash:init_cookies(splash.args.cookies)

    -- ... your script

    return {
        cookies = splash:get_cookies(),
        -- ... other results, e.g. html
    }
end

如果您使用不同的脚本进行登录和抓取,您可以 return 来自 login_script 的 cookie 并将其与 SplashRequest 一起发送:

yield SplashRequest(url = url, callback=self.item_parse, endpoint='execute',args={
                'lua_source': self.scrape_script
            }, meta={'cookies': cookies})

在 scrape_script 中,您需要使用以下命令设置 cookie:

 splash:init_cookies(splash.args.cookies)