在部署我们的代码到服务器前,我们来看看我们的代码需要哪些环境 首先,我们的代码是 Python3 开发的,因此,它首先依赖于 Python3 环境。 其次,我们的代码还用到了一此第三方的框架或库,比如 scrapy、pymysql... 当然,最重要的就是我们的代码了,他是我们的项目的核心逻辑和业务。
在上一篇中,我们完成了第一部分的 Python3 的环境的搭建。此文我们将完成第三方库安装以及代码部署这两部分的工作。
一、提交代码
以 gitee.com 作为我们代码托管平台进行示例。
注: 创建项目的步骤正常情况下不应该在项目开发完成以后再进行,但由于此步骤我在前面的文章中忘了介绍,因此在此处补上。事实上,之前开发的项目我已经提交过了,此处再另新建一个项目用作示例。
1 注册一个 gitee.com 账号
此步骤略
2 创建一个项目
3 安装 git 工具
我的开发环境是 Windows。因此,下载一个 Windows 版本的 git 并安装,下载地址如下所示: https://git-scm.com/download/win
安装过程略。
4 设置 SSH 公钥
点击头像 -> "设置" -> "SSH公钥" -> 点击右侧 "怎样生成公钥" 可查看生成方式
按照公钥生成方式生成公钥并添加到 gitee.com 的 SSH 公钥页面。公钥可以简单理解为密令,比如我们生成的公钥类似于 "天王盖地虎,宝塔镇河妖",然后我们把这个密令给 gitee.com,然后当我们需要与 gitee.com 进行资源操作时,两边一对口令,发现对上了。这事儿就简单了,也不用咱再用户密码验证一遍了。
5 代码提交
为了效果更直观,因此,直接在 PyCharm 中进行代码提交演示。
(1) 初始化项目
(2) 添加 readme.md 与 .gitignore
在项目根目录下创建名为 readme.md 与 .gitignore 的文件,文件内容大致如下:
README.md
.gitignore
(3) 添加远程仓库映射
PyCharm -> VCS -> Git -> Remotes -> 点击 "+" -> 将项目首页上代码仓库的 SSH 地址填入 URL 处 -> 点击 OK -> 等待 Checking URL -> 如果前面 SSH 公钥配置正确,此处就完事儿了
(4) 第一次提交
"VCS" -> "Commit..." -> 在 "Commit Message" 下方的文本框中输入提交的备注信息 -> 选择 "Commit and push"
二、拉取代码
1 配置服务器公钥
按照上方的配置方法与步骤将服务器的公钥配置到 gitee.com 平台
2 拉取代码
确定一个目录用于存放项目代码,如 /data 目录,
三、安装第三方库
1 创建虚拟环境
2 安装第三方库
根据我们 README.md 中记录的使用到的第三方库进行安装,如下示例: (省略安装过程)
其中,安装 scrapy 报错,报错信息如下,提示找不到匹配的 Twisted,于是手动安装:
再次安装 scrapy
四、运行
注:
运行前,请确保本机有需要的 mysql 数据库服务以及请确保创建了数据库表(数据库建表语句在代码中的 scripts/database.sql 中),如果想要将数据保存到其他数据库中,请修改 settings.py 中的 MySQL 相关配置。
1 运行方式一
第一步,进入我们的项目根目录。 第二步,可以执行 scrapy list 命令查看我们的所有的爬虫,这儿的 "proxyip" 就是我们在 spiders 下面的 xicidaili.py 中定义的 name 的值。 第三步,执行 scrapy crawl proxyip 运行爬虫。
注:
这种方式只是在前台运行,即当我们的会话结束,程序运行也就结束了。如果我们要想程序在后台运行,可以使用 这样的方式来执行
2 运行方式二
我们的爬虫是每次爬取西刺代理前 5 页的内容,如果我们想隔一段重复爬取一次呢。下面我们可以使用 crontab 的定时任务的方法实现,编辑 crontab -e ,在末尾添加如下命令并保存退出。
以上命令表示每个小时的整点会执行我们的爬虫程序
运行方式三
此方法是我们写一个 python 脚本,在 python 脚本中来调用系统命令 ,然后使用 python 的休眠来控制程序运行。
此 Python 脚本在我们可以创建在项目的根目录下,脚本名称随意,如 main.py 表示这是我们项目的入口文件,脚本内容如下:
然后我们使用如下方式运行我们的这个 python 脚本在后台即可:
五、总结
该系统使用一个简单的示例从环境搭建到代码编写到部署运行的完整过程分享了一个 Python Scrapy 爬虫的大致生产流程。以后有机会再分享更多 Python Scrapy 爬虫的知识,包括 Scrapy 分布式爬虫,Scrapyd 监控等等...
六、附录
以下是一个部署脚本,可以实现每次更新代码到仓库之后,执行该脚本自动重启项目运行。