Splash 可以通過 Lua 腳本執行一系列渲染操作,這樣我們就可以用 Splash 來模擬瀏覽器的操作了,Splash Lua 基礎語法如下:
function main(splash, args) # main()方法是入口,名稱必須固定的,Splash默認調用這個方法 splash:go("http://www.baidu.com") # go()方法用於加載頁面 splash:wait(0.5) # wait()方法用於等待指定的時間 local title = splash:evaljs("document.title") # evaljs()方法用於傳入並執行JavaScript腳本,這里將執行結果賦值給title變量 return title # 返回title變量的值,結果是一個字符串:"百度一下,你就知道" end # 也可以以字典的形式返回,如 return {title=title} ,則結果為:title: "百度一下,你就知道"
Splash 也支持異步處理:
在腳本內調用的 wait() 方法類似於 Python 中的 sleep(),其參數為等待的秒數。當 Splash 執行到此方法時,它會轉而去處理其他任務,然后在指定的時間過后再回來繼續處理。
function main(splash, args) local example_urls = {"www.baidu.com", "www.hao123.com", "www.zhihu.com"} local urls = args.urls or example_urls local results = {} for index, url in ipairs(urls) do local ok, reason = splash:go("http://" .. url) if ok then splash:wait(2) results[url] = splash:png() end end return results end