首页 > 编程语言 >Python爬虫-scrapyd框架部署

Python爬虫-scrapyd框架部署

时间:2022-10-11 20:11:27浏览次数:98  
标签:容器 Python 虚拟机 爬虫 json 镜像 docker scrapyd

爬虫项目部署

1 脚本文件部署

linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题。

1.1 crontab的使用

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

  • ***** 取值范围内的所有数字
  • / 每过多少个数字
  • - 从X到Z
  • 散列数字
代表意义 分钟 小时 日期 月份 命令
数字范围 0~59 0~23 1~31 1~12 0~6 就命令

1.2 为当前用户创建cron服务

  • 可以键入 crontab -e 编辑crontab服务文件

举例:

* * * * *      #每分钟都执行    

实例1:每5分钟执行一次文档写入

*/1 * * * * echo 'hello world' >> /home/poppies/Documents/xialuo/ps/demo.txt

实例2:每小时的第3和第15分钟执行

3,15 * * * *  echo 'hello world' >> /home/xxoo/demo/demo.log		

实例:在上午8点的20分钟执行

20 8 * * * myCommand  

1.3 单个脚本使用定时任务部署

1.3.1 上传本地文件到服务器
scp /path/filename username@servername:/path
scp env_ps.py [email protected]:/home/poppies/Documents/xialuo/ps
1.3.2 定时采集任务

1、使用定时任务启动 每5分钟采集一次数据

*/5 * * * *  python /home/poppies/Documents/xialuo/ps/env_ps.py spider >> /home/poppies/Documents/xialuo/demo/demo.log

2 使用scrapyd部署

2.1 环境安装

pip install scrapyd
pip install scrapyd-client

官网:https://scrapyd.readthedocs.io/en/stable/overview.html

由于window兼容性问题,所以scrapyd-deploy无法支持

D:\software\inters\python3\Scripts

修改 scrapyd-deploy.bat格式

@echo off
"D:\software\inters\python3\Scripts\python.exe" "D:\software\inters\python3\Scripts\scrapyd-deploy" % *

执行 scrapyd-deploy -l 看到以下

image

2.2 查询状态

这个接口负责查看 Scrapyd 当前服务和任务的状态,我们可以用 curl 命令来请求这个接口,命令如下:

curl http://127.0.0.1:6800/daemonstatus.json 

2.3 爬虫部署

1、把原先注释掉的url那一行取消注释,这个就是我们要部署到目标服务器的地址,
2、 把[deploy]这里改为[deploy:xl],这里是命名为xl,命名可以任意怎么都可以,只要能标识出来项目就可以。
下边的project 就是我们的工程名,到此配置文件更改完成。

2.3.1 发布项目
# 这里target 为你的服务器命令,prject是你工程的名字,发布工程之前我们的scrapyd.cfg必须修改
# scrapyd-deploy 部署名 -p 工程名称
scrapyd-deploy ps -p xialuo
2.3.2 启动爬虫
# PROJECT_NAME填入你爬虫工程的名字,SPIDER_NAME填入你爬虫的名字
curl http://localhost:6800/schedule.json -d project=xialuo -d spider=ps          
2.3.3 停止爬虫
curl http://localhost:6800/cancel.json -d project=huya -d job=86a3dd29d51811eca18f000ec6599497
2.3.4 查看当前项目
curl http://127.0.0.1:6800/listprojects.json
2.3.4 查看详情
curl http://localhost:6800/listjobs.json?project=xialuo
2.3.5 交互调试
import requests
data = {}
data['project'] = 'huya'
data['spider'] = 'hh'
url = 'http://127.0.0.1:6800/schedule.json'
res = requests.post(url,data)
res.json()  # 获取数据   返回jobid
print(res.json())
# 1b51dd0ac37e11ea8543000c29c350ab
# 停止
datas = {}
datas['project'] = 'xialuo'
datas['job'] = res.json()['jobid']
res = requests.post('http://127.0.0.1:6800/cancel.json',data)
print(res.text)

print(requests.get('http://localhost:6800/listjobs.json?project=huya').text)

3 Gerapy爬虫部署

​ 是一个基于ScrapydScrapyd APIDjangoVue.js搭建的分布式爬虫管理框架。简单点说,就是用上述的Scrapyd工具是在命令行进行操作,而Gerapy将命令行和图形界面进行了对接,我们只需要点击按钮就可完成部署,启动,停止,删除的操作。

3.1 环境安装

pip install gerapy

一、创建新项目

 gerapy init

二、对数据库初始化

  gerapy migrate      #   gerapy ==> python manage.py

三、启动gerapy服务

  gerapy runserver

四、创建用户名密码

gerapy createsuperuser 

3.2 项目部署

3.2.1 界面展示

image

3.2.2 爬虫部署

1、打包上传

2、复制代码到包即可

4 docker容器

4.1 docker简介

打包:docker打包就是把软件运行需要的依赖、第三方库、软件打包放到一起,变成一个安装包

分发:可以把打包的安装包上传到仓库、其他人可以下载使用

部署:就是把安装包使用命令运行起来你的应用,自动模拟环境。

Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用Linux容器来部署应用程序称为集装箱化。使用docker轻松部署应用程序

集装箱化的优点:

  • 灵活:即使是复杂的应用程序也可封装。
  • 轻量级:容器利用并共享主机内核。
  • 便携式:您可以在本地构建,部署到云上并在任何地方运行。
  • 可扩展性:您可以增加和自动分发容器副本。
  • 可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。

4.2 虚拟机virtual machine

虚拟机(virtual machine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统。应用程序对此毫无感知,因为虚拟机看上去跟真丝系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其它部分毫无影响。

虚拟机的缺点:

  • 资源占用多:虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有1M,虚拟机依然需要几百MB的内容才能运行。
  • 冗余步骤多:虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。
  • 启动慢:启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用陈故乡才能真正运行。

4.3 容器和虚拟机比较

一个容器中运行原生Linux和共享主机与其它容器的内核,它运行一个独立的进程,不占用任何其它可执行文件的内存,使其轻量化。

相比之下,虚拟机(VM)运行一个完整的“客户”操作系统,通过虚拟机管理程序虚拟访问主机资源。一般来说,虚拟机提供的环境比大多数应用程序需要的资源多。

image

  • dockerfile 就是源代码

  • image 镜像 可执行的程序 ubuntu mysql redis nginx elesticsearch 网站打包成镜像

  • container 运行的进程

学习地址:https://www.runoob.com/docker/docker-tutorial.html

4.4 docker安装

下载地址:

卸载旧版本

yum remove docker  docker-common docker-selinux docker-engine

安装

yum install -y yum-utils device-mapper-persistent-data lvm2 && python2 /usr/bin/yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && yum install docker-ce -y

启动

systemctl start docker

4.5 镜像使用

4.5.1 镜像列举

docker images 来列出本地主机上的镜像。

image

各个选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小
4.5.2 获取一个新的镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

docker pull ubuntu
4.5.3 查找镜像
docker search ubuntu
4.5.4 删除镜像
docker rmi ubuntu

4.6 容器使用

4.6.1 镜像查找

官方地址:https://hub.docker.com/

镜像下载

docker pull ubuntu
4.6.2 容器操作

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

查看所有的容器命令如下:

 docker ps -a

使用 docker start 启动一个已停止的容器:

docker start <容器 ID>

使用 docker stop 停止一个容器:

docker stop <容器 ID>

exec 命令

docker exec -it  <容器 ID> /bin/bash

删除容器

docker rm -f  <容器 ID>

运行一个 web 应用

  • 我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用
sudo  docker pull training/webapp 
sudo docker run -d -P training/webapp python app.py

参数说明:

  • -d:让容器在后台运行。
  • -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
    image

:Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 49153上。

这时我们可以通过浏览器访问http://192.168.65.232:49153/

我们也可以通过 -p 参数来设置不一样的端口:

sudo docker run -d -p 5000:5000 training/webapp python app.py

:容器内部的 5000 端口映射到我们本地主机的 5000 端口上。

标签:容器,Python,虚拟机,爬虫,json,镜像,docker,scrapyd
From: https://www.cnblogs.com/feng0815/p/16777053.html

相关文章

  • Python基础12
    今日内容概要global与nonlocal函数名的多种用法闭包函数装饰器简介装饰器推导流程装饰器模板装饰器语法糖今日内容详细global与nonlocal'''通过global声明可......
  • 装饰器+闭包掌握(python一大重要功能)
    目录global与nonlocal函数名的多种用法闭包函数装饰器简介1.概念2.本质3.口诀4.超前知识time模块装饰器推导装饰器模板装饰器语法糖作业global与nonlocalglobal#提升......
  • 将Curl转为Python的方法
    怎样将Curl转为Python的方法作为一名后端程序员,在服务器调试的过程中,使用curl命令为我们调试接口带来了很多的方便,极大地提高了效率;如下可以实现Get请求:curl'http://ba......
  • python | scrapy
    进入某网页的步骤分为域名解析,找到域名对应的ip地址向ip地址的服务器发送请求服务器响应,返回内容(html/json浏览器解析网页内容爬虫即实现浏览器功能,通过发送请求而......
  • Python pdb模块的使用
    野路子出生,写Python也有段时间了,一般的调试都用的print,PyCharm的debug功能也用的比较少,主要一般也用不到,第二是自己也不怎么会用. 服务器开发,本地根本没有运行的环境,......
  • python第十二课---
    昨日内容回顾函数参数"""短的简单的靠前长的复杂的靠后同一个形参在调用的过程中不能多次赋值"""位置参数 位置形参 函数定义阶段括号内依次填写的变量名......
  • python中items()函数作用
    参考链接:https://www.runoob.com/python3/python3-att-dictionary-items.htmlhttps://blog.csdn.net/weixin_43505418/article/details/115407835......
  • 天秀!花费 200W 设计的新版 “小米”图标,看看用Python怎么绘制?
    最终呈现效果哈哈,咋们在讲述之前,首先看看最终呈现的效果吧,整体来说还是很不错的。小米“新”图标背后的数学前段时间,小米公司发布了一条微博,引发了热议,原来小米换了新logo......
  • 对比Python,看看Excel如何3步给证件照换底色!
    Python完成证件照换底色​​注:​​该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流。不久前,我写了一篇关于Python怎么给证件照换底色的文章,阅读2万+,评论102,点......
  • python自动化办公之python操作PPT
    python自动化文章一直深受广大python爱好者的青睐。基于此,我花了整整一周时间真理出来的python自动化文档手册,涉及到六个章节(如下图所示):①python使用openpyxl操作excel;......