Могу ли я использовать две конечные точки Spla sh 'render. html' и 'execute' из одного скрипта, чтобы мне не приходилось делать запросы дважды? - PullRequest
0 голосов
/ 02 августа 2020

Я думаю, что в приведенном ниже сценарии Spla sh дважды извлекает один и тот же URL-адрес с удаленного сервера.

В первом случае он отправляет html визуализированный, поскольку конечная точка - это 'render. html 'и для другого запроса мы выполняем сценарий lua, чтобы щелкнуть кнопку, а затем отправить запрос из конечной точки' выполнить '.

            url = response.url + '#OddsComparison'
            meta_data['type'] = 'odds'
            meta_data['original_url'] = url
            meta_data['splash'] = {}
            meta_data['splash']['args'] = {}
            meta_data['splash']['args']['url'] = url  

            meta_data['bet_type'] = 'Win'
            meta_data['splash']['endpoint'] = 'render.html'
            meta_data['splash']['splash_url'] = getSplashURL()
            meta_data['splash']['wait'] = '10'

            yield Request(url, self.parse_odds, meta=meta_data, headers=headers)
            

            lua_script = """
                    function main(splash, args)
                      assert(splash:go(args.url))
                      assert(splash:wait(10))
                      js = 'document.getElementsByClassName("bettype__button")[1].click()'
                      splash:runjs(js)
                      
                      function is_complete(splash, condition)
                        while not condition() do
                          splash:wait(0.05)
                        end
                      end

                      is_complete(splash, function()
                          return splash:evaljs("document.getElementsByClassName('bettype__button')[1].className.includes('eventActive')")
                        end)
                      
                      return {
                        html = splash:html()
                      }
                    end"""

            meta_data['bet_type'] = 'Place'
            meta_data['splash']['args']['lua_source'] = lua_script
            meta_data['splash']['endpoint'] = 'execute'
            meta_data['splash']['splash_url'] = getSplashURL()
            meta_data['splash']['wait'] = '10'
            yield Request(url, self.parse_odds, meta=meta_data, headers=headers)

Один и тот же URL-адрес не извлекается дважды? Могу ли я как-нибудь оптимизировать это? Могу ли я сделать запрос на удаленный сервер только один раз и отправить один запрос и, используя ту же самую загруженную страницу, запустить несколько javascript и снова передать запрос? Возможно ли это?

...