Splash (渲染JS服务)介绍安装

一. splash介绍

  1.Splash 是一个带有 HTTP API 的 javascript 渲染服务。它是一个带有 HTTP API 的轻量级浏览器,使用 Twisted 和 QT5 在 Python 3 中实现。

  2.Splash特点:

        1)它快速、轻量且无状态,使其易于分发。

        2)并行处理多个网页

        3)获取 HTML 结果和/或截屏

        4)关闭图像或使用 Adblock Plus 规则来加快渲染速度

        4)在页面上下文中执行自定义 JavaScript

        5)编写 Lua 浏览脚本

        6)在Splash-Jupyter Notebooks中开发 Splash Lua 脚本。

        7)获取 HAR 格式的详细渲染信息。

  3.安装Splash不支持windows,需要linux+docker。

  4.Scrapy-Splash是一个客户端包,使Scarpy轻松集成,Scrapy-Splash使用Splash HTTP API。

 

二.Splash安装

  Splash是基于client/server架构,需要在server端安装,客户端通过Scrapy-Splash 接口调用spalsh api接口。

  1)要求环境: linux+docker, docker version>=17

  2)安装docker介绍:https://www.cnblogs.com/MrHSR/p/12806991.html

[root@iZwz927xptl8kw8zqrmwvcZ ~]# sudo yum install docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io

  3) 拉取镜像: $ sudo docker pull scrapinghub/splash

[root@iZwz927xptl8kw8zqrmwvcZ ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
hello-world          latest              feb5d9fea6a5        9 months ago        13.3kB
scrapinghub/splash   latest              9364575df985        23 months ago       1.89GB

  4) 启动容器: 

[root@iZwz927xptl8kw8zqrmwvcZ ~]# docker run -d -p 8050:8050 scrapinghub/splash
3bf80a55aec2f9735be66e51d226501df118e0fc4505ae775ad9c0ead6c8a725
[root@iZwz927xptl8kw8zqrmwvcZ ~]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                     NAMES
3bf80a55aec2        scrapinghub/splash   "python3 /app/bin/sp…"   8 seconds ago       Up 7 seconds        0.0.0.0:8050->8050/tcp   silly_panini

   也可以指定内存指定版本:docker run -d -p 8050:8050 --memory=4.5G --restart=always scrapinghub/splash:3.1 --maxrss 4000 

  或者: docker run -d -p 8050:8050 --memory=4.0G scrapinghub/splash

   在外网能拼通

三. 测试

  官方提供了可视化界面进行测试,浏览器打开 http://120.xx.xxx.xxx:8050/ ,如下所示

   输入baidu网站会自动截屏和查看网页原码,如下所示:

 

   查看spalsh日志,首先要知道spalsh的容器ID,在根据容器ID,查看日志

[root@iZwz927xptl8kw8zqrmwvcZ ~]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                   NAMES
3bf80a55aec2        scrapinghub/splash   "python3 /app/bin/sp…"   9 days ago          Up 9 days           0.0.0.0:80              50->8050/tcp   silly_panini
[root@iZwz927xptl8kw8zqrmwvcZ ~]# docker logs -f 3bf80a55aec2

 

服务端安装参考:https://splash.readthedocs.io/en/stable/install.html#install-docs

客户端安装参考:https://github.com/scrapy-plugins/scrapy-splash

 

posted on 2022-07-28 14:45  花阴偷移  阅读(671)  评论(0编辑  收藏  举报

导航