一:什么是Splashcss
Splash是一个 JavaScript渲染服务,是一个带有 HTTPAPI 的轻量级浏览器html
1 功能介绍json
利用 Splash,咱们能够实现以下功能:浏览器
口异步方式处理多个网页渲染过程;cookie
口 获取渲染后的页面的源代码或截图; 异步
口 经过关闭图片渲染或者使用 Adblock规则来加快页面渲染速度; post
口 可执行特定的 JavaScript脚本; url
口可经过 Lua 脚原本控制页面渲染过程; spa
口 获取渲染的详细过程并经过 HAR ( HTTP Archive )格式呈现。 插件
2:安装教程(不作介绍,小伙伴可自行百度,教程不少)
3:Splash使用到的方法:
go()--------------go()方法去加载页,且它能够模拟 GET 和 POST请求,同时支持传入请求头,表单等数据
wait()------------wait()方法能够控制页面的等待时间
evaljs()----------evaljs()方法传入JavaScript脚本并返回最后一条 JavaScript语句的返回结果
wait()----------- wait()方法相似于 Python 中的 sleep(),其参数为等待的秒数。
jsfunc() ------------能够直接调用 JavaScript 定义的方法,可是所调用的方法须要用双中括号包围,这至关于 实现了 JavaScript方法到 Lua脚本的转换
runjs()------------runjs()方法能够执行 JavaScript 代码,它与 evaljs()的功能相似,可是更偏向于执行某些动做或声 明 某些方法
autoload() ------ autoload() 方法能够设置每一个页面访问时自动加载的对象
call_later()--------方法能够经过设置定时任务和延迟时间来实现任务延时执行,井且能够在执行前经过 cancel() 方法 从新执行定时任务
http_get() --------此方法能够模拟发送 HTTP 的 GET请求
http _post()-----http_get()方法相似,此方法用来模拟发送 POST请求,不过多了一个参数 body
set_content() ------此方法用来设置页面的内容
html() ----------此方法用来获取网页的源代码
png() ------------此方法用来获取 PNG 格式的网页截图
jpeg() -----------此方法用来获取 JPEG 格式的网页截图
har() ------------此方法用来获取页面加载过程描述
url() ------------此方法能够获取当前正在访问的 URL
get_cookies() -----此方法能够获取当前页面的 Cookies
add_cookie() -----此方法能够为当前页面添加 Cookie
clear_ cookies() ---此方法能够清除全部的 Cookies
get_viewport_size() ---此方法能够获取当前浏览器页面的大小,即宽高
set_viewport_full() ---此方法能够设置浏览器全屏显示
set_user_agent() ----此方法能够设置浏览器的 User-Agent
set_custom_headers() ---此方法能够设置请求头
select() -------该方法能够选中符合条件的第一个节点,若是有多个节点符合条件, 则只会返回一个,其参数是 css 选择器
select_all() ------此方法能够选中全部符合条件的节点,其参数是 css 选择器
mouse_click() ------此方法能够模拟鼠标点击操做,传入的参数为坐标值 x 和 y。 此外,也能够直接选中某个节点, 而后调用此方法
4:Splash 对象属性
function main(splash, args) local url = args.url end
• splash
main()方法的第一个参数是 splash ,这个对象很是重要,它相似于 Selenium 中的 WebDriver 对象,咱们能够调用它的一些属性和方法来控制加载过程
• args
该属性能够获取加载时配置的参数
• js_enabled
这个属性是 Splash的JavaScript执行开关,能够将其配置为true或false来控制是否执行JavaScript 代码,默认为 true
• resource_timeout
此属性能够设置加载的超时时间,单位是秒。 若是设置为 0 或 nil (相似 Python 中的 None ),代 表不检测超时
• images_ enabled
此属性能够设置图片是否加载,默认状况下是加载的
• plugins _enabled
此属性能够控制浏览器插件(如 Flash 插件)是否开启 。 默认状况下,此属性是 false,表示不开 启
• scroll_position
经过设置此属性,咱们能够控制页面上下或左右滚动。 这是一个比较经常使用的属性
二:Splash API 调用
• render.html
此接口用于获取 JavaScript渲染的页面的 HTML 代码,接口地址就是 Splash 的运行地址加此接口 名称,
• render.pug
此接口能够获取网页截图,其参数比 render.html 多了几个,好比经过 width 和 height 来控制宽高, 它返回的是 PNG 格式的图片二进制数据
render.jpeg
此接口和 render.pug相似,不过它返回的是 JPEG 格式的图片二进制数据。
另外, 此接口比 render.png 多了参数 quality,它用来设置罔片质量。
render.bar
此接口用于获取页面加载的 HAR数据,它的运回结果很是多,是一个 JSON 格式的数据,其中包含页面加载过程巾的 HAR数据。
render.json
此接口包含了前面接口的全部功能,返回结果是 JSON 格式
• execute
此接口才是最为强大的接口 。 前面说了不少 Splash Lua脚本的操做,用此接口即可实现与 Lua脚 本的对接。
若是要实现 一些交互操做的话,这里就须要使用 execute 接口了。