搭建 PySpider 爬虫服务

腾讯云
入门
0 个任务
剩余 3 个名额

你还可以 创建 或者 使用已有 云主机不限时上机

实验内容

PySpider 是一个国人编写的强大的网络爬虫系统并带有强大的 WebUI。采用 Python 语言编写,分布式架构,支持多种数据库后端,强大的 WebUI 支持脚本编辑器,任务监视器,项目管理器以及结果查看器。 本教程将一步一步指引您搭建属于您自己的 PySpider 爬虫服务。

首次可免费使用云主机 45 分钟 ,到期后云主机将被重置并退库,若想保留成果请及时留用。

实验资源

云服务器

软件环境

CentOS 7.2 64 位

目录

# 搭建 PySpider 爬虫服务 ## 环境准备 > <time>5min ~ 10min</time> ### 前置环境部署 在开始部署前,我们需要做一些前置准备 [:question][icon_prepare]。 > <bubble for="icon_prepare">该步骤可选,但为了部署的稳定性,推荐执行</bubble> yum 更新 [:question][icon_please_wait] > <bubble for="icon_please_wait">该步骤耗时可能较长(5~10min),请耐心等待</bubble> ``` yum update -y ``` 安装开发编译工具 ``` yum install gcc gcc-c++ -y ``` 安装依赖库 ``` yum install python-pip python-devel python-distribute libxml2 libxml2-devel python-lxml libxslt libxslt-devel openssl openssl-devel -y ``` 升级pip ``` pip install --upgrade pip ``` ## 部署 mariadb > <time>10min ~ 20min</time> 由于 CentOS 7 中 MySQL 数据库已从默认的程序列表中移除,我们使用 mariadb 代替。 ### 安装 mariadb ``` yum install mariadb-server mariadb -y ``` > <checker type="output-contains" command="mysqladmin --version" hint="安装 mariadb"> > <keyword regex="mysqladmin" /> > </checker> ### 启动 mariadb 服务 ``` systemctl start mariadb ``` > <checker type="output-contains" command="ps -ef | grep 'mysql' | grep -v grep" hint="启动 mariadb 服务"> > <keyword regex="/usr/libexec/mysqld" /> > </checker> ### 设置 root 密码 默认的root用户密码为空,你可以使用以下命令来创建 root 用户的密码: *(该步骤也可以跳过,password 后的 `${runtime.vars.allocatedPassword}` 可以改为任何你希望设置的密码)* ``` mysqladmin -u root password "${runtime.vars.allocatedPassword}" ``` ### 检查是否安装成功 现在你可以尝试通过以下命令来连接到 Mysql 服务器 [:question][icon_for_none_pass] > <bubble for="icon_for_none_pass">如果您未设置密码,直接使用 `mysql` 即可 </bubble> ``` mysql -u root -p ``` 然后输入您刚才设置的密码 ( 默认:`${runtime.vars.allocatedPassword}` ),如果一切正常,您应该可以在命令行看到以 `MariaDB [(none)]>` 或 `mysql>` 开头的提示了,说明连接成功。 此时输入 `SHOW DATABASES;` 并回车,应该可以看到类似下面这样的输出,说明一切正常。 ``` mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.13 sec) ``` 完成后,可以通过快捷键 `Ctrl+C` 或命令行键入 `exit` 来退出,进入下一步。 ## 部署 redis > <time>10min ~ 20min</time> ### 下载、解压安装包 #### 下载安装包 ``` wget http://download.redis.io/redis-stable.tar.gz ``` #### 解压安装包 ``` tar -xzvf redis-stable.tar.gz ``` #### 移动解压包到 /usr/local 内 ``` mv redis-stable /usr/local/redis ``` #### 编译安装 ``` cd /usr/local/redis make make install ``` > <checker type="output-contains" command="ls /usr/local/bin/redis-cli" hint="安装redis"> > <keyword regex="/usr/local/bin/redis-cli" /> > </checker> ### 设置 redis 配置 #### 设置配置文件路径 ``` mkdir -p /etc/redis cp /usr/local/redis/redis.conf /etc/redis/redis.conf ``` 修改 [/etc/redis/redis.conf ][edit-redis-config] 文件的 `daemonize` 配置项为如下: > <edit for="edit-redis-config" file="/etc/redis/redis.conf" /> ``` daemonize yes ``` > <checker type="output-contains" command="cat /etc/redis/redis.conf | grep 'daemonize yes'" hint="修改redis配置"> > <keyword regex="daemonize yes" /> > </checker> ### 启动 redis 服务 ``` /usr/local/bin/redis-server /etc/redis/redis.conf ``` > <checker type="output-contains" command="ps -ef | grep '/usr/local/bin/redis-server' | grep -v 'grep'" hint="启动 redis 服务"> > <keyword regex="/usr/local/bin/redis-server" /> > </checker> ## 部署 pyspider > <time>10min ~ 20min</time> ### 安装依赖 ``` pip install --upgrade chardet easy_install mysql-connector==2.1.3 easy_install redis pip install Jinja2==2.10 ``` > <checker type="output-contains" command="ls -la /usr/lib/python2.7/site-packages" hint="更新 chardet"> > <keyword regex="chardet-" /> > </checker> > <checker type="output-contains" command="ls -la /usr/lib/python2.7/site-packages" hint="安装 mysql-connector"> > <keyword regex="mysql_connector" /> > </checker> > <checker type="output-contains" command="ls -la /usr/lib/python2.7/site-packages" hint="安装 python redis 模块"> > <keyword regex="redis" /> > </checker> ### 安装 pyspider ``` pip install pyspider ``` > <checker type="output-contains" command="pyspider --version" hint="安装 pyspider"> > <keyword regex="pyspider" /> > </checker> ### 配置 pyspider 首先创建配置目录 ``` mkdir /etc/pyspider ``` 然后 `/etc/pyspider` 目录下[创建 pyspider.conf.json][create_pyspider_conf],参考下面的内容。 具体配置的说明文档请参考 [官方文档](http://docs.pyspider.org/en/latest/Deployment/#configjson) > <locate for="create_pyspider_conf" path="/etc/pyspider" hint="右击,创建 pyspider.conf.json"></locate> ```javascript /// <example verb="create" file="/etc/pyspider/pyspider.conf.json" /> { "taskdb": "mysql+taskdb://root:${runtime.vars.allocatedPassword}@127.0.0.1:3306/taskdb", "projectdb": "mysql+projectdb://root:${runtime.vars.allocatedPassword}@127.0.0.1:3306/projectdb", "resultdb": "mysql+resultdb://root:${runtime.vars.allocatedPassword}@127.0.0.1:3306/resultdb", "message_queue": "redis://127.0.0.1:6379/db", "webui": { "username": "root", "password": "${runtime.vars.allocatedPassword}", "need-auth": true } } ``` 其中 mysql 配置中的 `root` 为您 mysql 的用户名, `root:` 后面的 `${runtime.vars.allocatedPassword}` 为您刚设置的密码。 `webui` 配置中的 username 及 password 为您访问 WebUI 时候需要的用户名,你也可以不设置用户名密码,直接将 `need-auth` 设为 `false` 即可。 > <checker type="output-contains" command="cat /etc/pyspider/pyspider.conf.json | grep 'taskdb' -c" hint="配置pyspider"> > <keyword regex="1" /> > </checker> ### 启动服务 ``` pyspider -c /etc/pyspider/pyspider.conf.json ``` 如果一切正常,现在访问 [http://${runtime.vars.cvmIpAddress}:5000][http://${runtime.vars.cvmIpAddress}:5000],您应该可以看到 pyspider dashboard 的首页了。 服务能够正常启动后,我们需要让它能够在后台运行,您可以通过以下命令让服务在后台运行 ``` nohup pyspider -c /etc/pyspider/pyspider.conf.json & ``` 也可以使用官方推荐的 [Supervisor](http://supervisord.org/) 来启动,这里就不详细介绍了,具体用法可以参考 Supervisor 的文档 ## 部署完成 > <time>1min ~ 2min</time> ### 访问服务 此时您可以访问 [http://${runtime.vars.cvmIpAddress}:5000][http://${runtime.vars.cvmIpAddress}:5000] 使用您的爬虫来搜集数据了,具体 pyspider 爬虫脚本的编写及使用教程可以参考 [网上资料][http://www.pyspider.cn/index.html]。 ### 大功告成 恭喜您已经完成了搭建 PySpider 爬虫服务的学习,您可以留用或者[购买 Linux 版本的 CVM][https://buy.qcloud.com/?fromSource=lab] 继续学习。