安装docker

​ 安装docker就一条例命令就好了

[root@spider1 ~]# yum install docker

​ 配置docker的源.

[root@spider1 ~]# vi /etc/docker/daemon.json
# 写入一下内容, 注意.先按'i', 更换为输入模式. 然后再填写内容
{
	"registry-mirrors": ["https://registry.docker-cn.com/"]
}
# 保存: 先按esc. 退出输入模式, 然后输入":wq" 表示写入, 退出. 就完事儿了
[root@spider1 ~]# systemctl start docker    # 启动docker
[root@spider1 ~]# docker ps      # 查看docker运行状态

如需关闭或者重新启动docker:

systemctl stop docker   # 停止docker服务
systemctl restart docker  # 重启docker服务

安装splash

  1. 拉取splash镜像

    docker pull scrapinghub/splash
    

    splash比较大. 大概2个G左右. 有点儿耐心等会儿就好了

  2. 运行splash

    docker run -p 8050:8050 scrapinghub/splash
    
  3. 打开浏览器访问splash

http://192.168.118.132:8050/
image

安装过程中可能遇到的错误:
Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:53458->[::1]:53: read: connection refused
解决

 vim /etc/resolv.conf 

加入:

nameserver 8.8.4.4
nameserver 8.8.8.8

image-1673064089385
image-1673064098698

splash的http-api接口

splash提供了对外的http-api接口. 我们可以像访问一个普通url一样访问splash. 并由splash帮助我们渲染好页面内容.

http://192.168.31.82:8050/render.html?url=http://www.baidu.com

虽然看不出任何差别. 但是你心里要清楚一个事情. 此时拿到的直接是经过js渲染后的html

我们换个url

http://192.168.31.82:8050/render.html?url=https://www.endata.com.cn/BoxOffice/BO/Year/index.html&wait=5

endata这个网站. 它的数据是后期经过ajax请求二次加载进来的. 我们通过splash可以等待它后期加载完再拿html.

综上, splash的工作机制:

image-20210817155156714

整个一个代理服务器的逻辑. ~~~~