美文网首页python爱好者
Splash使用初体验

Splash使用初体验

作者: 明慢慢 | 来源:发表于2016-07-06 21:22 被阅读8634次

    什么是splash

    Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。

    为什么有splash

    为了更加有效的制作网页爬虫,由于目前很多的网页通过javascript模式进行交互,简单的爬取网页模式无法胜任javascript页面的生成和ajax网页的爬取,同时通过分析连接请求的方式来落实局部连接数据请求,相对比较复杂,尤其是对带有特定时间戳算法的页面,分析难度较大,效率不高。而通过调用浏览器模拟页面动作模式,需要使用浏览器,无法实现异步和大规模爬取需求。鉴于上述理由Splash也就有了用武之地。一个页面渲染服务器,返回渲染后的页面,便于爬取,便于规模应用。

    Splash的安装

    从splash网站上看,splash是容器安装的,而容器安装仅介绍了在linux和 mac os上的容器安装,所以首先要在windows下安装容器

    docker在windows下的安装

    1. 首先点击下面链接,从docker官网上下载windows下的docker进行安装,不过请注意系统要求是**windows1064位 pro及以上版本或者教育版 **,本文使用为非windows10 pro版本的docker toolbox
      win10 版本docker工具箱下载


      如果不是请点击windwos docker工具箱下载
    2. 安装docker到机器
      注意在运行时如果是win7以上版本请使用管理员身份运行



      然后按安装提示安装就好。安装完成后在桌面上有4个图标具体如下


    3. 用管理员身份运行docker quickstart terminal,可能会出现报找不到bash.exe错误,这个是由于bash.exe的安装目录和 docker quickstart terminal快捷方式中所指向的bash.exe的目录不一致所造成,修订docker quickstart terminal快捷方式中的bash.exe目录就好,具体bash.exe的目录在Git安装目录下的bin目录中。
      注意:运行这个需要在bios中打开CPU对应虚拟化支持VT-x/AMD-V
      第一次运行需要做基本设置时间相对较长

      docker命令行.gif
    4. 使用SecureCRT连接docker
      下载并安装secureCRT,
      在连接对话框输入docker的地址:默认是192.168.99.100,上面的图里看得见:),用户名:docker,密码:tcuser


    在docker中安装和运行splash

    1. docker中安装splash
      通过SecureCRT连接到docker机器输入
    #从docker hub下载相关镜像文件
    sudo docker pull scrapinghub/splash
    

    这里需要注意的是由于docker hub的软件仓库不在国内,下载或许需要不少时间,若无法忍受请自行使用代理服务或者其他镜像仓库

    1. 启动splash服务
    • 使用docker启动服务命令启动Splash服务
    #启动splash服务,并通过http,https,telnet提供服务
    #通常一般使用http模式 ,可以只启动一个8050就好  
    #Splash 将运行在 0.0.0.0 at ports 8050 (http), 8051 (https) and 5023 (telnet).
    sudo docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash
    
    SPLASH启动.gif
    • 服务启动后,打开浏览器输入192.168.99.100:8050查看服务启动情况


    • 输入www.baidu.com,点击Render me 按钮,立马可以看见在服务器端渲染后的百度页面

    1. Splash使用
      Splash 本身支持进行页面的过滤,具体规则模式和Adblock Plus的规则模式一致,我们可以通过直接下载Adblock Plus的过滤规则来对页面进行过滤,或者为了提高页面的加载和渲染速度,可以通过设定过滤规则来屏蔽一些不想下载的内容,比如图片,视频等。一般可以首先下载Adblock Plus的规则,屏蔽掉广告
    #设置一个本地目录映射为docker中 splash的文件目录,用于类似adblock plus的广告过滤
    #<my-filters-dir>:是一个本地文件夹,注意这里的本地是宿主哦,不是windows哦
    #同时设置adblock过滤器目录为/etc/splash/filters
    $ docker run -p 8050:8050 -v <my-filters-dir>:/etc/splash/filters scrapinghub/splash  --filters-path=/etc/splash/filters
    

    下图是没有加载过滤器的新浪首页样子


    未使用过滤器

    下图是使用过滤器后新浪首页的样子


    屏幕快照 2016-07-06 下午9.11.05.png

    相关文章

      网友评论

      • 上將noodle:我用了splash ,输入www.baidu.com后却一直在initializing...请问是什么原因啊?
        7fcf0d978630:我也遇到这种问题,换成ie浏览器就解决了

      本文标题:Splash使用初体验

      本文链接:https://www.haomeiwen.com/subject/swmhjttx.html