当javascript发出多个请求时,如何在Scrapy+Splash中设置cookie?

Jam*_*var 3 web-crawler scrapy scrapy-splash splash-js-render

当 javascript 加载时,它会发出另一个 ajax 请求,其中应在响应中设置 cookie。但是,Splash 不会在多个请求中保留任何 cookie,有没有办法在所有请求中保留 cookie?或者甚至在每个请求之间手动分配它们。

Mik*_*bov 5

是的, scrapy-splash README中有一个示例- 请参阅会话处理部分。简而言之,首先确保所有设置都正确。然后用来SplashRequest(url, endpoint='execute', args={'lua_source': script})发送scrapy请求。渲染脚本应该是这样的:

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

    -- ... your script

    return {
        cookies = splash:get_cookies(),
        -- ... other results, e.g. html
    }
end
Run Code Online (Sandbox Code Playgroud)

scrapy-splash README 中还有一个关于 cookie 处理、标头处理等的完整示例 - 请参阅此处的最后一个示例。