Scrapy笔记09- 部署

本篇主要介绍两种部署爬虫的方案。如果仅仅在开发调试的时候在本地部署跑起来是很容易的,不过要是生产环境,爬虫任务量大,并且持续时间长,那么还是建议使用专业的部署方法。主要是两种方案:

部署到Scrapyd

Scrapyd是一个开源软件,用来运行蜘蛛爬虫。它提供了HTTP API的服务器,还能运行和监控Scrapy的蜘蛛

要部署爬虫到Scrapyd,需要使用到scrapyd-client部署工具集,下面我演示下部署的步骤

Scrapyd通常以守护进程daemon形式运行,监听spider的请求,然后为每个spider创建一个进程执行scrapy crawl myspider,同时Scrapyd还能以多进程方式启动,通过配置max_procmax_proc_per_cpu选项

安装

使用pip安装

pip install scrapyd

在ubuntu系统上面

apt-get install scrapyd

配置文件地址,优先级从低到高
配置

  • /etc/scrapyd/scrapyd.conf (Unix)
  • /etc/scrapyd/conf.d/* (in alphabetical order, Unix)
  • scrapyd.conf
  • ~/.scrapyd.conf (users home directory)

具体参数参考scrapyd配置

简单的例子

[scrapyd]
eggs_dir = eggs
logs_dir = logs
items_dir =
jobs_to_keep = 5
dbs_dir = dbs
max_proc = 0
max_proc_per_cpu = 4
finished_to_keep = 100
poll_interval = 5
bind_address = 0.0.0.0
http_port = 6800
debug = off
runner = scrapyd.runner
application = scrapyd.app.application
launcher = scrapyd.launcher.Launcher
webroot = scrapyd.website.Root [services]
schedule.json = scrapyd.webservice.Schedule
cancel.json = scrapyd.webservice.Cancel
addversion.json = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json = scrapyd.webservice.ListSpiders
delproject.json = scrapyd.webservice.DeleteProject
delversion.json = scrapyd.webservice.DeleteVersion
listjobs.json = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

部署

使用scrapyd-client最方便, Scrapyd-client是scrapyd的一个客户端,它提供了scrapyd-deploy工具将工程部署到Scrapyd服务器上面

通常将你的工程部署到Scrapyd需要两个步骤:

  1. 将工程打包成python蛋,你需要安装setuptools
  2. 通过addversion.json终端将蟒蛇蛋上传至Scrapd服务器

你可以在你的工程配置文件scrapy.cfg定义Scrapyd目标

[deploy:example]
url = http://scrapyd.example.com/api/scrapyd
username = scrapy
password = secret

列出所有可用目标使用命令

scrapyd-deploy -l

列出某个目标上面所有可运行的工程,执行命令

scrapyd-deploy -L example

cd到工程根目录,然后使用如下命令来部署:

scrapyd-deploy <target> -p <project>

你还可以定义默认的target和project,省的你每次都去敲代码

[deploy]
url = http://scrapyd.example.com/api/scrapyd
username = scrapy
password = secret
project = yourproject

这样你就直接取执行

scrapyd-deploy

如果你有多个target,那么可以使用下面命令将project部署到多个target服务器上面

scrapyd-deploy -a -p <project>

部署到Scrapy Cloud

Scrapy Cloud是一个托管的云服务器,由Scrapy背后的公司Scrapinghub维护

它免除了安装和监控服务器的需要,并提供了非常美观的UI来管理各个Spider,还能查看被抓取的Item,日志和状态等。

你可以使用shub命令行工具来讲spider部署到Scrapy Cloud。更多请参考官方文档

Scrapy Cloud和Scrapyd是兼容的,你可以根据需要在两者之前切换,配置文件也是scrapy.cfg,跟scrapyd-deploy读取的是一样的。

Scrapy笔记09- 部署的更多相关文章

  1. Scrapy笔记02- 完整示例

    Scrapy笔记02- 完整示例 这篇文章我们通过一个比较完整的例子来教你使用Scrapy,我选择爬取虎嗅网首页的新闻列表. 这里我们将完成如下几个步骤: 创建一个新的Scrapy工程 定义你所需要要 ...

  2. 笔记-爬虫部署及运行工具-scrapydweb

    笔记-爬虫部署及运行工具-scrapydweb 1.      简介 scrapyd是爬虫部署工具,但它的ui比较简单,使用不是很方便. scrapydweb以scrapyd为基础,增加了ui界面和监 ...

  3. Learning Scrapy笔记(六)- Scrapy处理JSON API和AJAX页面

    摘要:介绍了使用Scrapy处理JSON API和AJAX页面的方法 有时候,你会发现你要爬取的页面并不存在HTML源码,譬如,在浏览器打开http://localhost:9312/static/, ...

  4. Learning Scrapy笔记(零) - 前言

    我已经使用了scrapy有半年之多,但是却一直都感觉没有入门,网上关于scrapy的文章简直少得可怜,而官网上的文档(http://doc.scrapy.org/en/1.0/index.html)对 ...

  5. JAVA自学笔记09

    JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...

  6. 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据

    机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...

  7. 强化学习读书笔记 - 09 - on-policy预测的近似方法

    强化学习读书笔记 - 09 - on-policy预测的近似方法 参照 Reinforcement Learning: An Introduction, Richard S. Sutton and A ...

  8. 转 Scrapy笔记(5)- Item详解

    Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便. Item提供了类字典的API,并且可以很方便的声明字段,很多Scra ...

  9. Scrapy笔记(1)- 入门篇

    Scrapy笔记01- 入门篇 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说, ...

随机推荐

  1. 一、WebAPI自定义过滤器的使用

    一.WebAPI自定义过滤器的使用 1.注册过滤器 using System.Web.Http; using KYINT.WebAPIService.Handler; namespace KYINT. ...

  2. .NET Core:中间件

    中间件是组装到应用程序管道中以处理请求和响应的软件,功能上更贴合系统的使用中间件. 每个组件: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下一个组件之前和之后执行工作. 请求委托(R ...

  3. SQL ----------- join (inner join 内连接)

    SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段,把两个表中的数据放在一个表中查询 注意: join 连接有多种方式,比如内连接,外连接,交叉连接 可以和where ...

  4. 使用spring jpa hibernate框架时报错:javax.validation.UnexpectedTypeException: HV000030

    错误信息: [#%&*^]20190521121942:497.!react:all.,RctJobExecutor-1#D9AA5167921A464CA9DDA14943545426%NA ...

  5. eclipse卡在revert resources的解决方法

    遇到Eclipse卡在Revert Resources进程的问题,等又等不到它执行完毕(进度一直是0%),取消又是石沉大海一样毫无动静.更气人的是这个进程阻塞了其他所有的进程,什么操作都做不了.真是苦 ...

  6. 【ELK】elasticsearch中使用脚本报错:scripts of type [inline], operation [update] and lang [groovy] are disabled

    查看ID为2的这条数据: 使用更新命令: 使用脚本对年龄+5 curl -XPOST http://192.168.6.16:9200/my_new_index/user/2/_update?pret ...

  7. JS提交表单页面不跳转、JS下载、动态创建from

    JS下载 function downloadFile(id) {     var url =  "<%=request.getContextPath()%>/cer/downlo ...

  8. 解决plsql中文显示问号(???)问题

    最近新买的电脑,配置好数据库连接后,plsql查看数据与插入中文数据都显示问号(???),同事的都正常显示,查看了很多资料,有的说是数据库字符集的原因让修改数据库的字符集,但是我的数据库都是远程连接正 ...

  9. 理解了quote和 symbol-list的 关系

    'x   ===  (quote x) '(x) ===  (list 'x)

  10. JAVA WEB面试总结

    本文目录: 1. 什么是cookie 2. 什么是session 3.什么是Servlet,Servlet生命周期方法 4.JSP隐含对象 5.JSP的四个域对象的作用范围 6.转发和重定向的区别 7 ...