Как получить AJAX постраничную постраничную рассылку под scrapy-splash - PullRequest
0 голосов
/ 06 марта 2019

Требование: существует нумерация списка городов, управляемая AJAX, и я хочу сканировать внутренний HTML-код элемента <div id="city_list">...</div> страница за страницей.

Проблема: код, который я пробовал, показан ниже иЯ получил ошибку тайм-аута после запуска.

def start_requests(self):
    script = """
        function main(splash, args)
            assert(splash:go(args.url))
            assert(splash:wait(0.5))

            local index = 1
            local citylist_list={}

            while splash:evaljs("$('a.pg-next').length>0") do
                splash:runjs("$('a.pg-next').click()")
                splash:wait(1)
                local citylist_html = splash:evaljs("$('#citylistlist').html()")
                if citylist_html ~= nil then
                citylist_list[index]=citylist_html
                index=index+1
                end
            end 

            return citylist_list
        end
    """
    for url in self.start_urls:
        yield SplashRequest(
            url, 
            self.parse_result,
            endpoint='execute',
            args={'lua_source': script}
        )
...