要求:有一个由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}
)