存档

文章标签 ‘Docker’

Splash:javascript渲染服务简单介绍

2020年8月5日 评论已被关闭

我们在使用scrapy爬取web页面时,有时会碰到无法获取某些动态页面中的元素的情况。

这时候一般有3种方法:

  1. 抓包,分析页面中动态元素的真实请求,重新发送请求以获取元素数据
  2. 使用headless浏览器模拟访问页面,比如可以使用selenium框架实现模拟访问
  3. 通过代理服务获取完整加载后的web页面

Splash是一个javascript渲染服务,提供了代理web访问的功能。

Splash是一个轻量级web浏览器,提供了基于http的访问api。它使用Python3实现,底层基于Twisted和QT5。

Splash具有以下特性:

  1. 可以并行处理多个web页面
  2. 可获取页面的HTML数据,也可以进行页面截图
  3. 可使用Adblock Plus的过滤规则过滤页面上的图片,以加快页面渲染
  4. 可在页面上下文环境中执行javascript脚本
  5. 支持编写lua浏览器脚本
  6. 能够获取HAR格式的详细的渲染信息

我们看一下如何在centos上安装和运行Splash。

首先安装docker,docker版本不低于17.

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

启动docker守护进程

systemctl start docker

获取splash image文件

docker pull scrapinghub/splash

启动splash

docker run -it -p 8050:8050 --rm scrapinghub/splash

 

成功之后,可以访问http://localhost:8050查看splash到底是个什么东东。

 

Splash提供了若干http api:

  1. render.html
    • 返回web页面的HTML数据
    • curl'http://localhost:8050/render.html?url=http://baidu.com/&timeout=10&wait=0.5'
      
  2. render.png
    • 返回web页面的png截图
    • curl ‘http://localhost:8050/render.png?url=http://baidu.com/’
  3. render.har
    • 返回HAR格式的请求交互信息
  4. render.json

在Scrapy中,可以使用scrapy-splash来使用splash的渲染服务,以获取动态页面上的元素。

分类: Python, 开发 标签: , ,

关于docker的一些个人认识

2016年4月8日 没有评论
  1. host、docker engine、docker container
    1. host: the system(os/machine/vm) docker engine is running on. On windows, docker engine depends on a “default” linux virtual machine, so the host refers to this “default” vm.
    2. docker engine: the process dealing with docker client commands and managing(oprations like crud) docker containers
    3. docker container: a process running on the host which performs functions defined by images
  2. image、container
    1. to run an image will make a container
    2. run a daemoned container using -d flags
    3. the container will NOT remove itself automatically, using “docker rm containerID” to remove it
  3. docker network
    1. docker engine will create a default bridged network “docker0” on the host
    2. when running a container using a default net options(bridge), docker engine create a peer of interfaces to enable network communications between the container and the other ones.This peer of interfaces are eth0 on the container and vethXXYYZZ on the host.
    3. we can manually create our own networks.
  4. others…
分类: 资料 标签:

使用阿里云加速docker镜像的安装

2016年3月10日 没有评论

刚接触docker,尝试安装node镜像。docker运行在win7中,安装完Docker Toolbox之后简单敲了docker pull node命令,然后就是漫长的等待了…

等待的结果就是node下载失败!总共不到200兆的镜像怎么会失败呢?网上查了查,原来docker被墙了!!!好吧,挂个vpn试试,还是不行。

最终的解决办法是:重新初始化docker,使用阿里云提供的镜像加速地址进行下载。方法如下:

  1. 停掉已打开的docker client,在virtual box中停掉并删除docker使用的default虚拟机
  2. 通过命令行手动初始化docker:docker-machine create –engine-registry-mirror=https://xxyyzz.mirror.aliyuncs.com -d virtualbox default.其中,xxyyzz对应于每个开发者。获取页面在这里
  3. 在virtual box中可以看到已运行的default虚拟机了,你可以根据需要关闭它,修改一些配置。
  4. 再次运行docker client,重新执行docker pull node。等一会吧,然后就下载成功了,是不是很开森哪?
分类: 工具, 开发 标签: ,

Windows 7上安装Docker

2016年3月7日 没有评论
  1. 系统要求
  2. 安装Docker Toolbox
    • Docker官网下载安装包
    • 运行安装包,所有安装选项均默认
    • 如果系中已安装VirtualBox,不必重新安装;如果VirtualBox正在运行,需要先停止
    • 安装过程中,系统会有权限提示,全部允许
  3. 安装检查
    • 点击桌面上的Docker图标,启动Docker Toolbox终端
    • 终端初始化完成后,会启动一个bash命令行
    • 输入测试命令:docker run hello-world
    • 当看到“Hello from Docker.”,恭喜,安装成功
分类: 工具, 开发 标签: