zoukankan      html  css  js  c++  java
  • Scrapy对接Splash基础知识学习

    一:什么是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 接口了。 

  • 相关阅读:
    0113-06-侯舒舒(作业-复盘分析)
    0113-06-侯舒舒(日报)
    总结
    0108-06-侯舒舒(日报)
    cobalt strike插件
    关于python安装后更新的一些问题
    常用dos命令
    curl命令用法
    2020/1/16
    2020/1/15
  • 原文地址:https://www.cnblogs.com/lmx123/p/9989915.html
Copyright © 2011-2022 走看看