Django+Scrapy搭配使用

本文介绍了如何在Django应用中不阻塞地调用Scrapy爬虫,通过Scrapyd服务进行项目的发布、调度、取消任务等操作。详细讲解了Scrapyd的配置和API使用,包括列出项目、版本、爬虫列表,以及任务管理和版本删除。

Django应用写好了,Scrapy的内容也写好了。

想要在Django中执行Scrapy爬虫么?直接在Django中运行command?不,这样会把Django阻塞的。下面介绍一种不阻塞Django依旧能调用Scrapy的方法。

本文主要讲述通过Scrapyd来进行Scrapy的调用。

目录

起步

配置Scrapy

Scrapyd操作

发布项目

调度爬虫

取消正在进行的任务

获取上传的项目

获取项目的版本

获取项目的爬虫列表

获取任务列表(Scrapyd 0.15版本以上)

删除项目版本

删除项目


起步

首先安装Scrapyd。

pip install Scrapyd

Scrapyd通常作为守护进程运行,它侦听运行爬虫的请求,并为每个请求生成一个进程,该进程基本上执行:scrapy crawl [myspider]。

Scrapyd还并行运行多个进程,将它们分配到max_proc和max_proc_per_cpu选项提供的固定数量的插槽中,启动尽可能多的进程来处理负载。

除了调度和管理进程之外,Scrapyd还提供了一个JSON web服务来上载新的项目版本(作为egg)和调度爬虫。

scrapyd的官方文档:Scrapyd — Scrapyd 1.2.0 documentation

安装完成后,进入到Scrapy项目的根目录下。执行

scrapyd

执行完成后,在浏览器输入

http://localhost:6800

可以看到这样的界面

接下来正式开始。

配置Scrapy

因为要和Django搭配使用,所以我们需要做一个小小的配置。记住,在scrapy项目的settings.py中修改!!!

# scrapy项目的settings.py文件中加入下面内容
import os
import sys

# DJANGO INTEGRATION
# E:\code\django_scrapy\extra_apps\mySpider\mySpider/set
# 注意这个路径修改成自己的Django项目所在的路径
sys.path.append('../../../django_scrapy')
# Do not forget the change Crawler part based on your mySpider name
# 下面这行的django_scrapy修改为自己的Django项目名字
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_scrapy.settings'

# This is required only if Django Version > 1.8
import django

django.setup()

# DJANGO INTEGRATION

Scrapyd操作

官方提供了API,我们可以直接通过请求进行操作。

  • 发布项目

url = "http://127.0.0.1:6800/addversion.json"
data = {
   "project": "mySpider", # Scrapy的项目名字
   "version": 1, # 版本号
   "egg": '1.egg' # 打包成egg文件的名字
}
res = requests.post(url, d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值