记录一次爬虫部署问题-主要爬取别的系统的数据来支撑我们的数据大屏

写在前面

由于前同事留下的一个爬虫项目,爬虫主要爬取别的系统的数据来支撑我们的数据大屏。同事留下的是在本地算是基本开发完毕的爬虫项目。我需要做的就是将项目部署上线在服务器上就可以了。但是因为我也刚更新设备,就记录一下我的整个流程。

代码是python3的写的,但是Mac OSX系统自带的是python2版本的。所以就想着就使用双Python版本就可以啦。

一.安装Python3

  1. 前置:安装好Homebrew【大概是Mac的包管理工具】
    常用操作:
    brew -v
    brew -h
    brew list
    brew search <包>
    brew install <包>
    brew uninstall <包>
    brew upgrade 软件名 更新具体软件名,例:brew upgrade git
    brew update 用于更新所有软件
通过 update 可以把包信息更新到最新,不过包更新是通过git命令,所以要先通过 brew install git 命令安装git

查看软件信息:brew info 软件名

  1. 安装Python3

brew install python

使用brew 来安装python会自动把pip装上,上面安装的是pip3(python3.x的包管理工具)。
查看版本:

python -V
pip3 -V

通过brew info python 可以知道:

If you need Homebrew's Python 2.7 run
  		brew install python@2
  1. 安装Python2

    brew install python@2

这个时候会安装python2和pip2
查看版本:
python -V
pip2 -V

  1. 说明
    到这里环境中已经有了2和3版本的pyhton了,但是在使用python -V的时候,还是python2的版本,有的小伙伴可能想要修改默认的版本为python3,可以看看这篇文章

二.安装virtualenv 和 virtualenvwrapper

virtualenv是python的虚拟环境,能够和系统环境相隔离,保持环境的纯净;
virtualenvwrapper可以方便的管理虚拟环境。

由于项目代码是pyhton3 的我这里就使用pip3
安装:

pip3 install virtualenv
sudo easy_install virtualenvwrapper

接下来,设置虚拟环境的存储位置

编辑系统环境变量

vim ~/.bash_profile 
#WORKON_HOME 创建虚拟环境所在的目录
export WORKON_HOME=<你想要的位置>
:wq

source ~/.bash_profile 
source /usr/local/bin/virtualenvwrapper.sh

virtualenvwrapper的使用

在执行之前可能得
source /usr/local/bin/virtualenvwrapper.sh

创建虚拟环境python3
mkvirtualenv --python=/usr/local/bin/python3 env3

创建虚拟环境Python2
mkvirtualenv --python=/usr/local/bin/python env2

列出虚拟环境
lsvirtualenv -b

切换虚拟环境
workon env2

查看环境里安装了哪些包,进去环境才行
lssitepackages

退出虚拟环境
deactivate

删除虚拟环境
rmvirtualenv env2

在虚拟环境中import所需的包,workon进到某个环境
pip3 install scrapy
pip2 install scrapy

三. 项目部署

根据上面的操作,我已经把项目所需要的环境和依赖包安装好了,并使用pycharm把项目代码在本地调试通过,没有问题了。准备上线。

服务器上的环境安装我就不说了,直接说部署过程中的问题

问题1:有一个lxrd 依赖线上环境没有这个,我就只有先下载再上传
http://www.lfd.uci.edu/~gohlke/pythonlibs/
pip install 下载的xxx

问题2:在linux中运行python文件时 会遇到导包错误的情况
ModuleNotFoundError: No module named 'xxx’
由于不在pycharm中 所以这里不能将上一级目录加入 sources root

解决方法:导入 项目根目录 到sys 系统路径中

import os
import sys
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

上面代码放在from a import b 之前就可以啦。

其余就没有什么大的问题了。

接下来,就是写了一个简单的定时任务,每天凌晨一点执行一次

0 1 * * * sh /home/liuge36/pachong/sbin/executespider.sh

后面再把这个任务放置到azkaban中去吧

这样,整个部署就结束了。主要是想记录一下自己遇到的问题,希望对你也有帮助,哈哈哈~~~

原文地址:https://www.cnblogs.com/liuge36/p/12614737.html