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 接口了。 

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/lmx123/p/9989915.html
Copyright © 2011-2022 走看看