【问题标题】:How to keep splash cookies如何保存飞溅饼干
【发布时间】:2021-03-03 11:38:39
【问题描述】:

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

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

【问题讨论】:

    标签: web-scraping scrapy session-cookies middleware scrapy-splash


    【解决方案1】:

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

    function main(splash)
        splash:init_cookies(splash.args.cookies)
    
        -- ... your script
    
        return {
            cookies = splash:get_cookies(),
            -- ... other results, e.g. html
        }
    end
    

    如果您使用不同的脚本进行登录和抓取,您可以从 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多