一:什么是Splash

Splash是一个 JavaScript渲染服务,是一个带有 HTTPAPI 的轻量级浏览器

1 功能介绍

利用 Splash,我们可以实现如下功能:

口异步方式处理多个网页渲染过程;

口 获取渲染后的页面的源代码或截图;

口 通过关闭图片渲染或者使用 Adblock规则来加快页面渲染速度;

口 可执行特定的 JavaScript脚本;

口可通过 Lua 脚本来控制页面渲染过程;

口 获取渲染的详细过程并通过 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 接口了。

Scrapy对接Splash基础知识学习的更多相关文章

  1. (转)Linux基础知识学习

    Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...

  2. GCC基础知识学习

    GCC基础知识学习 一.GCC编译选项解析 常用编译选项 命令格式:gcc [选项] [文件名] -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -c:仅执行编译操作,不进行连接操作: -o ...

  3. Objective-c基础知识学习笔记

    Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...

  4. AXAJ基础知识学习

    AXAJ基础知识学习 博客首页 Ajax简介 ajxa全称是Asynchronous Javascript And XML ,就是异步的JS 和XML 通过Ajax可以再浏览器中向服务器发送异步请求, ...

  5. Vue2基础知识学习

    Vue2基础知识学习 01.初识 new Vue({ el: '#root', //用于指定当前Vue实例为哪个容器服务,值通常为css选择器符 data () { return { } } }); ...

  6. C#基础知识学习

    C#基础知识整理 学习地址:http://blog.csdn.net/column/details/csarp.html

  7. 韩天峰博客 php基础知识学习记录

    http://rango.swoole.com 写好PHP代码真的不容易,给大家几个建议: 慎用全局变量,全局变量不好管理的,会导致你的代码依赖于全局变量,而耦合度太高. 一定不要复制粘贴代码,可重用 ...

  8. 〖前端开发〗HTML/CSS基础知识学习笔记

    经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...

  9. Linq的简介和基础知识学习

    学习LINQ之前,我们要知道LINQ是干什么,解决什么问题的,怎样学习? 一.LINQ简介 1.什么是LINQ? 什么是LINQ?LINQ中文翻译为语言集成查询(Language Integrated ...

随机推荐

  1. jQuery 小特效【文本框折叠隐藏,展开显示】【下拉菜单】【颜色渐变】【弹窗+遮罩】

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...

  2. linux下如何批量杀JAVA进程或某个进程方法

    linux下如何批量杀JAVA进程或某个进程方法 在工作中经常需要停止JAVA进程,停止时间也比较长,那么有时候因为一些情况,需要把 linux 下JAVA所有进程 kill 掉,又不能用killal ...

  3. [android] 手机卫士手机定位的原理

    手机定位的三种方式:网络定位,基站定位,GPS定位 网络定位,手机连上wifi 2g 3g的时候,手机会有一个ip,误差很大 基站定位,精确度与基站的多少有关,几十米到几公里的误差 GPS定位,至少需 ...

  4. Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)

    1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器 ...

  5. linux学习笔记-目录相关知识

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! linux的目录结构及作用是根据fhs标准定制的,以下列出一些常用的目录的作用,以及fhs官方网站的连接 FHS官方网站的连接: ...

  6. PHP7.27: MySqlhelper class

    https://github.com/ThingEngineer/PHP-MySQLi-Database-Class https://github.com/wildantea/php-pdo-mysq ...

  7. 使用bootstrap的JS插件实现模态框效果

    在上一篇文章中,我们使用 js+css 实现了模态框效果,在理解了模态框的基本实现方法和实现效果后,我们就要寻找更快捷的方法,又快又好的来完成模态框开发需求,从而节约时间,提高效率.一个好的轮子,不仅 ...

  8. onkeypress 在js函数返回false后没有反应

    一.解决方案: 把 onkeypress = "function()" 改为 onkeypress = "event.returnValue=function()&quo ...

  9. Django ModelForm 校验数据格式

    发现ModelForm很好用,用来做form表单验证效果很好.但是也要注意几点. forms的用法: 使用默认方式:继承forms.Form类,类里面的字段名称一定要和前端HTML里面的form表单里 ...

  10. git本地仓库关联多个remote,怎么用本地一个分支向不同remote不同分支推送代码

    我想这个问题,是大家关注的问题,这个问题,我非常关注. 背景:在公司开发项目,我们一般都要把项目推送到公司领导创建的一个远程仓库里边去,但是我们同时也有自己的小仓库,这样的话,如何方便的将我们的代码, ...