如何在scrapy-splash下逐页获取AJAX分页

时间:2019-03-06 08:13:20

标签: scrapy-splash

要求:有一个由AJAX驱动的城市列表分页,我想逐页抓取<div id="city_list">...</div>元素的内部html。

问题:我尝试的代码如下所示,运行后出现超时错误。

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}
        )

0 个答案:

没有答案