刚开始接触Splash,按照崔庆才老师的《Python3网络爬虫开发实战》中提供的方法,使用docker拉取镜像安装,然后启动,访问localhost:8050
,一切都很美好。
docker pull scrapinghub/splash
docker run -d -p 8050:8050 scrapinghub/splash
但是通过 Splash 提供的 Web 页面来测试其渲染过程时,一直渲染不出来,打开控制台发现是jquery和bootstrap资源没有正确加载造成的,如下图所示:
解决思路:
由于该问题是资源加载不成功导致的,那么我们把这几个不能访问的资源替换成可以访问的地址就可以了,步骤如下:
首先,github上下载splash源码,全局搜索jquery、jquery-migrate、bootstrap,定位到引用位置在splash/resources.py
中。
然后,百度搜索相同版本的cdn资源,替换掉这几个链接。
最后,返回项目根目录,编辑一下Dockfile为:
FROM scrapinghub/splash
COPY . /app
然后执行docker build -t your-awsome-name/splash:v1 .
构建你自己的镜像,停止官方镜像创建的容器,使用自己的镜像启动容器
docker run -d -p 8050:8050 your-awsome-name/splash:v1
搞定。