所在位置:

部署scrapy爬虫

我们在上一篇文章中已经实现了一个获取向下滚动展示更多数据的内容,这一篇文章里我们要把这个爬虫部署到免费的云服务器( https://www.zyte.com ),这个云服务器可以使用 python2 或者 python3,这里我们使用 python3 来部署

预备工作

  • python3.7.4
  • scrapy 2.7.0
  • virtualenv 15.2.0(python3的使用 python3 -m venv venv 来创建虚拟环境)

注册账号并创建新项目

  • https://www.zyte.com 去注册一个账号
  • 登录账号进到后台首页,会看到一个 Create Project 的按钮,点击这个按钮,在弹出框里输入项目的名字,我们这里输入 scrapy-scroll

上传本地的项目文件

  • 点击 Code & Deploys,就可以看到下面的界面:

  • 进到我们本地的项目 scrollquotes,在命令行下执行下面的操作:
$ cd scrollquotes
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install shub
$ shub login # 输入上面图片的 API key 
$ shub deploy 626591
  • 执行完上面的命令,就会把我们本地的项目上传到线上,点击 Dashboard,再点击 Run 按钮就可以执行我们的爬虫了。

  • 下面是我获取到的数据:

我们可以发现这个云服务器是有提供定时爬取的功能,但是是收费的,有没有其它的方式实现定时爬取数据呢?答案是有的,我们可以使用 SpiderKeeper SpiderKeeper 是一款开源的spider管理工具,在本地部署或者买个 vps 来进行部署都可以的,下面我们在本地项目上进行操作:

安装相关的包

$ cd scrollquotes
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install scrapy
$ pip install scrapyd
$ pip install scrapyd-client
$ pip install spiderkeeper
  • scrapyd 是一个用来部署和运行scrapy爬虫的应用。它可以让你部署(上传)你的项目和通过 JSON API 来控制它们的爬虫。

  • scrapyd-client 可以把本地的项目打包给 scrapyd 来用的。

  • 如果在安装包的时候出现这个错误:Could not install packages due to an EnvironmentError: Missing dependencies for SOCKS support,可以输入下面的命令,然后再安装就可以了

unset all_proxy && unset ALL_PROXY

启动 Scrapyd

$ cd scrollquotes
$ scrapyd

打开 http://127.0.0.1:6800/,可以看到 scrapyd 服务已经在运行了

启动 SpiderKeeper

$ cd scrollquotes
$ spiderkeeper
  • 打开 http://127.0.0.1:5000/,可以看到 spiderkeeper 服务已经在运行了,这里输入用户名(admin)和密码(admin)就可以进到后台了,其实 spiderkeeper 是一个 flask 写的程序,可以在 虚拟环境中找到这个包来修改配置信息

  • spiderkeeper 的后台界面

点击 Create Project 创建一个名为 scrapy-scroll 的项目

打包 egg 文件

$ cd scrollquotes
$ scrapyd-deploy --build-egg output.egg

把 egg 文件上传到这里:

运行爬虫

点击 Dashboard,然后再点击 RunOnce 按钮,就会看到爬虫在运行了,但只会运行一次

定时执行爬虫任务

点击 Periodic Jobs,再点击 Add Job,选择每一分钟执行一次,如下图所示:

再点击列表里的 Run,就可以执行这个任务了

参考链接

【上一篇】用scrapy爬取向下滚动更多内容的网站

【下一篇】在 centos 中使用 nvm 和 nrm