Splash lua API概览¶
Splash 提供了许多方法、函数和属性。这些内容分别被写进了文档:Splash 脚本参考 , 可用的lua库 , 元素对象 , 请求对象 , 响应对象 和 使用二进制数据 。下面将对这些内容做一些简单的描述
脚本作为 Splash HTTP API 端点¶
每一个splash 的lua脚本都可以看做是一个 HTTP API 端点,具有输入参数和结构化的返回值。您可以使用lua脚本来模拟一个render.png端点,包括它 所使用的参数。
- splash.args 可以从脚本中获取数据 [2]
- splash:set_result_status_code 可以在返回值中修改HTTP的状态码
- splash:set_result_content_type 运许更改返回给客户端的Content-Type
- splash:set_result_header 可以在返回值中增加自定义的HTTP头
- Working with Binary Data 描述了如何在splash中使用非文本数据、比如如何给客户端返回二进制数
- treat 运许将在返回结果时将自定义数据序列化为json格式
延迟¶
- splash:wait 允许等待特定的时间
- splash:call_later 后续执行一项任务
- splash:wait_for_resume 等待某些js事件发生
- splash:with_timeout 允许设置代码执行的超时时间
在页面中提取相关的信息¶
- splash:html 返回页面通过浏览器渲染后的HTML 内容
- splash:url 返回当前浏览器中加载的url
- splash:evaljs 和 splash:jsfunc 允许在页面中通过js来提取数据
- splash:select 和 splash:select_all 允许在页面中使用CSS选择器。它们会返回对应元素的对象,这些对象在许多方法和后续的处理上都很有用(请参阅 元素对象 )
- element:text 返回DOM对象的文本内容
- element:bounds 返回元素的边界框
- element:styles 返回自定义的元素样式
- element:form_values 返回表单元素的值
- DOM中的 ` HTMLElement <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement>`_ 对象的绝大多数属性和方法都被支持,您可以参阅 DOM属性 和 DOM 方法
截图¶
- splash:png, splash:jpeg 得到一个PNG 和 JPEG的截图
- splash:set_viewport_full 通过修改视口的大小(通常在使用 splash:png, splash:jpeg <./scripting-ref.html#splash-jpeg> 之前调用)可以获得页面完整的截图
- splash:set_viewport_size 修改视口大小
- element:png 和 element:jpeg 截取单个DOM元素的截图
与页面交互¶
- splash:runjs , splash:evaljs 和 splash:jsfunc 允许在页面上下文中执行任意的js脚本
- splash:autoload 允许在页面开始渲染的时候预加载一些JavaScript库或者执行JavaScript代码
- splash:mouse_click , splash:mouse_hover , splash:mouse_press , splash:mouse_release 允许向页面指定的坐标发送鼠标消息
- splash:send_keys 和 splash:send_text 允许向页面发送键盘事件
- element:send_keys and element:send_text 向指定的DOM元素发送键盘事件
- 您可以通过使用 element:form_values 函数来设置表单的初始值, 使用 element:fill 来更新表单值, 使用 ` element:submit <./scripting-element-object.html#splash-element-submit>`_ 来提交表单
- splash.scroll_position 允许您滚动页面
- DOM中的 ` HTMLElement <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement>`_ 对象的绝大多数属性和方法都被支持,您可以参阅 DOM属性 和 DOM 方法
构造HTTP 请求¶
- splash:http_get 发送一个HTTP 的GET请求,并获取一个未经过渲染的原始的响应
- splash:http_post 发送一个HTTP 的POST请求,并获取一个未经过渲染的原始的响应
检查网络流量¶
- splash:har 在 HAR 结构体中返回所有的HTTP请求和响应
- splash:history 返回有关重定向和加载到主浏览器窗口的页面的信息;
- splash:on_request 允许捕捉浏览器页面或者脚本中的错误
- splash:on_response_headers 允许在获取响应头后,进行检查(或者丢弃)
- splash:on_response 允许检查接受到的原始响应信息(包括相应的资源新)
- splash.response_body_enabled 允许接受 splash:har 和 splash:on_response <./scripting-ref.html#splash-on-response> 中全部的响应信息
- 您可以参阅 Response Object 和 Request Object 来获取关于请求和响应的更详细的信息
浏览选项¶
- splash.js_enabled 允许关闭JavaScript的支持
- splash.private_mode_enabled 允许关闭专有模式 (它在有些情况下是有用的,比如Webkit在专有模式是没有本地存储)
- splash.images_enabled 允许禁止下载图片
- splash.plugins_enabled 允许禁止加载插件 (默认情况下docker中的镜像允许加载Flash)
- splash.resource_timeout 允许在超时后减缓或者挂起相关请求
- splash.indexeddb_enabled 允许打开IndexedDB
- splash.webgl_enabled 允许关闭WebGL
- splash.html5_media_enabled 允许打开对HTML5的支持(比如 播放
<video>
标签) - splash.media_source_enabled 允许关闭对多媒体扩展API的支持
[2] | 这里的脚本指的是Python脚本 |