背景

Scrapy爬虫的确是好使好用,去过scrapinghub的官网浏览一下,更是赞叹可视化爬虫的犀利。scrapinghub有一系列的产品,开源了大部分项目,Portia负责可视化爬虫的编辑,SpiderCloud负责云端爬虫的部署,Scrapy是实现他们底层的技术。国内的可视化爬虫技术也有不少,据我所知就这几种:

如果有其他优秀的可视化爬虫我没有提到,大家可以补充。他们的功能暂不讨论,但他们都没有开源的,不方便我们研究。

而scrapinghub将Portia开源出来了,我们可以通过这个渠道了解可视化的爬虫。虽然开源出来了,可是安装真的不容易啊。

安装

安装之前交代一下,系统和环境吧!

  • 系统:Ubuntu14 server
  • Python:2.7
  • 目标版本:2.0.8

有这两个就够了,这两个是必须的。至于Python的版本可不可以是3.0以上呢?我只能说在3.0以上的版本环境下,我没有安装成功过,可能是我个人操作失误的原因。

如果仅仅是使用的话,docker和本地安装都是可以的,至于Vagrant可不可以,我就没试过了。

我这里优先说本地部署的方式,因为这种方式以后要改造代码再部署的话比较方便。官方文档说的比较简单,按照官网文档来安装,肯定要踩不少的坑。

我们拟定将Portia安装在/opt目录下面

1、克隆Portia

cd /opt

sudo git clone https://github.com/scrapinghub/portia.git

如果没有git的话,执行sudo apt-get install git安装Git

2、不要使用虚拟环境

不知道你们有没有强迫症,反正我是有的,用什么pyenv和virtualenv搞过虚拟环境,让我踩了不少坑。里面有什么坑呢?

  • 安装的脚本需要新建文件,需要sudo,如果使用了sudo,你的pyenv就白装了,sudo会使用系统的Python2.7。
  • portia和splash的脚本的写法不同,导致pyenv和virtualenv生效的情况也不一样。

结论是,我输了,我使用系统的Python2.7来安装。

3、安装脚本

cd portia

sudo ./provision.sh install_deps install_splash install_python_deps

接下来可以等待安装完成。

4、替换下载慢的脚本(可选)

这步是可选的,如果sip或者PyQt下载的比较慢,可以先手动下载好。

http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz

http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.tar.gz

分别改名为sip.tar.gz和pyqt5.tar.gz放在/downlaods目录中,/downloads没有就新建一个。

然后vi /tmp/splash-2.3.x/dockerfiles/splash/provision.sh

#curl -L -o /downloads/sip.tar.gz http://sourceforge.net/projects/pyqt/files/sip/sip-${SPLASH_SIP_VERSION}/sip-${SPLASH_SIP_VERSION}.tar.gz && \
#curl -L -o /downloads/pyqt5.tar.gz http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-${SPLASH_PYQT_VERSION}/PyQt-gpl-${SPLASH_PYQT_VERSION}.tar.gz && \

注释掉,保存退出。再次在portia目录下执行./provision.sh install_splash

最后等待安装,当然,如果你网络好,这步可以忽略。

5、配置nginx

vi nginx/nginx.conf

修改:

root /opt/portia/portiaui/dist;
location /static {
alias /opt/portia/portiaui/dist;
}

保存退出。

执行sudo ./provision.sh configure_nginx configure_initctl

6、安装前端依赖和UI

sudo ./provision.sh install_frontend_deps build_assets

7、运行

前面的准备工作都做好了,现在运行Portia

export PYTHONPATH='/opt/portia/portia_server:/opt/portia/slyd:/opt/portia/slybot'

slyd/bin/slyd -p 9002 -r portiaui/dist & portia_server/manage.py runserver

现在打开浏览器http://localhost:9001爽爽吧!

题外话

在ctrl+c停掉应用后,再次启动会被提示端口已占用。这个时候使用ps -ef | grep slyd,把对应的slyd端口kill掉

可视化爬虫Portia安装和部署踩过的坑的更多相关文章

  1. CentOS7.2上用KVM安装虚拟机window10踩过的坑

    最近两个星期一直在琢磨kvm安装window10操作系统,并且通过桥接模式与外界通信,经历了九九八十一难,终于搞定.下面就记录以下我们在探索的过程中踩过的坑. 安装KVM 1. 系统要求:需要一台可以 ...

  2. Linux学习、Mongodb部署 踩到的坑学习

    一.安装Centos 7虚拟机系统 1.系统安装 下载阿里云的镜像,下载后安装,默认全程图形界面:虚拟机使用Win10自带的Hyper:碰到的坑记录下 1.在Hyper加载镜像启动的时候,提示“虚拟机 ...

  3. 安装Apache所踩的的坑

    刚开始接触PHP等一些脚本语言,需要建立一个本地的服务器,变进行安装了Apache.在其中碰到了诸多问题,和大家一一分享一下. 一.刚解压完成后使用cmd面板进入解压完成的apache的bin目录下, ...

  4. supervisor安装使用和我踩过的坑

    什么是supervisor: supervisor是一款用python编写的进程管理工具,主要运行于linux系统,不支持windows系统,目前还不能运行于python3下. step1:安装sup ...

  5. IONIC和Cordova安装、打包踩过的坑

    1.问题1:直接执行npm install -g cordova ionic,因为网络原因,执行不成功 解决方案:将npm映射到淘宝服务器:npm install -g cnpm --registry ...

  6. webpack4.0在Mac下的安装配置及踩到的坑

    一.什么是webpack是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源.它做的事情是,分析你的项目结构,找到JavaScript模块以 ...

  7. Mysql5.7.19压缩版安装步骤及踩过的坑

    安装Mysql5.7.19压缩版 一:下载压缩包 1.从MySQL官网下载MySQL Community Server 5.7.19,此版本为免费版. 2.下载完成之后解压缩,打开之后文件夹如下:   ...

  8. 安装Mycat 曾经踩的那些坑

    1. INFO | jvm | ----/--/-- --:--:-- | Caused by: io.mycat.config.util.ConfigException: schema TEST d ...

  9. 最细的eclipse 安装maven踩过的坑

    Eclipse安装maven插件踩过的坑 在线安装maven eclipse安装maven插件,在网上有各种各样的方法,博主使用过的也不止一种,但是留下的印象总是时好时不好,同样的方法也不确定那一次能 ...

随机推荐

  1. Sprint 3.0

    3.0----------------------------------------------------- SCRUM 流程的步骤2: Spring 计划 1. 确保product backlo ...

  2. jmeter body 中文显示为乱码解决

    这种情况在jmeter3.0的版本中才会产生,注意:这不是乱码,而是由于3.0中优化body data后,使用默认的字体(Consolas)不支持汉字的显示.这样的情况可以这样调整:进入jmeter. ...

  3. getResource()的使用总结 ;

    1.通过ClassLoader来加载getResource()时不需要加 "/" 因为source是从main开始的; Thread.currentThread().getCont ...

  4. redis批量删除key 命令

    redis-cli -n 数据库编号 -a 密码 keys "过滤条件" | xargs redis-cli -n 数据库编号 -a 密码 del Demo: redis-cli ...

  5. es6 let关键字

    1.let关键字 var arr = [ ]; for(var i=0; i<10; i++){ arr [i] = function(){ alert(i) } } arr [8](); // ...

  6. 转载manifold learning一篇

    我恨自己不干活儿,不过也没辙. 早晚要学习流形的,今天先转一篇文章,以后找不到就尿了. 我真羡慕数学系的人,╮(╯▽╰)╭. 发信人: Kordan (K&M), 信区: AI标  题: do ...

  7. 深度学习读书笔记之RBM(限制波尔兹曼机)

    深度学习读书笔记之RBM 声明: 1)看到其他博客如@zouxy09都有个声明,老衲也抄袭一下这个东西 2)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的 ...

  8. mysql测试索引在表中的作用

    //未完成 参考书:(完成对缓存中执行计划的查看对比 P133~) Microsoft SQL Server 2008技术内幕:T-SQL查询 实验内容 单表中的索引使用 1.建表 create ta ...

  9. Post Lamps CodeForces - 990E(暴力出奇迹?)

    题意: 在一个从0开始的连续区间上  放置几个小区间,使得这些小区间覆盖整个大区间,不同长度的小区间有不同的花费,其中有m个点,小区间的左端点不能放在这些点上 解析: 显然如果0是这m点中的一个 则无 ...

  10. vyos User Guide

    vyos User Guide 来源 https://wiki.vyos.net/wiki/User_Guide The VyOS User Guide is focused on providing ...