scrapyd的API调用方法难记?一个Python脚本轻松搞定

scrapyd官方文档

http://scrapyd.readthedocs.io/en/stable/overview.html

首先,我们来了解一下什么是scrapyd

  • scrapyd是运行scrapy爬虫的服务程序,它支持以http命令方式发布、删除、启动、停止爬虫程序。而且scrapyd可以同时管理多个爬虫,每个爬虫还可以有多个版本。

为什么要使用scrapyd

  • 1、可以避免爬虫源码被看到。
  • 2、有版本控制。
  • 3、可以远程启动、停止、删除。

怎样安装scrapyd

  • 1,安装scrapyd
    主要有两种安装方式:
    pip install scrapyd (安装的版本可能不是最新版本)
    从 https://github.com/scrapy/scrapyd 中下载源码,
    运行python setup.py install 命令进行安装
  • 2, 安装 scrapyd-deploy
    主要有两种安装方式:
    pip install scrapyd-client(安装的版本可能不是最新版本)
    从 http://github.com/scrapy/scrapyd-client 中下源码,
    运行python setup.py install 命令进行安装。

scrapy的使用

  1. 第一步:
    在服务端 启动 scrapyd,运行scrapyd命令即可
    在这里插入图片描述
    启动成功后,在浏览器中可以通过服务端的IP 和 默认端口号6800进行访问,界面如图所示
    scrapyd的API调用方法难记?一个Python脚本轻松搞定_第1张图片
  2. 第二步:
    发布爬虫工程到 scrapyd

首先配置 scrapy爬虫中的 scrapy.cfg
scrapyd的API调用方法难记?一个Python脚本轻松搞定_第2张图片

  • 1.首先去掉url前面的注释符号,url是scrapyd服务器的网址
  • 2.然后project=tenCent为项目名称,可以随意起名
  • 3.修改[deploy]为[deploy:100],表示把爬虫发布到名为100的爬虫服务器上,一般在需要同时发布爬虫到多个目标服务器时使用
    scrapyd的API调用方法难记?一个Python脚本轻松搞定_第3张图片

添加爬虫工程
命令如下:

Scrapyd-deploy  -p  --version 

参数解释:

  • Target:deploy后面的名称。
  • Project:自行定义名称,跟爬虫的工程名字无关。
  • Version:自定义版本号,不写的话默认为当前时间戳。
    scrapyd的API调用方法难记?一个Python脚本轻松搞定_第4张图片
    发布成功之后 在浏览器界面刷新 即可看到 新添加的 爬虫工程

以上在scrapyd官方文档中 都有说明,如有不明,请查看官方文档

**

重点来了,下面是scrapyd 提供的API

**

  1. 启动爬虫任务:
curl http://localhost:6800/schedule.json -d project=myproject -d spider=spider_name
  1. 停止爬虫任务:
curl http://localhost:6800/cancel.json -d project=spider_name -d job=job_id
  1. 检查服务的负载状态
curl http://localhost:6800/daemonstatus.json
  1. 获取上传到此Scrapy服务器的项目列表
curl http://localhost:6800/listprojects.json

**更多API可以查看官网:**https://scrapyd.readthedocs.io/en/latest/api.html

其实 以上这些难记的 API 只需要一个简单的 Python脚本 就可以搞定

import requests

class ScrapyApi(object):
	def __init__(self):
		self.ip = "localhost"
		self.port = 6800
		
	#启动爬虫任务方法
	def schedule(self,project,spider):
		self.url = "http://%s:%s/schedule.json"%(self.ip,self.port)
		self.data = {
			"project":project,
			"spider":spider
		}
		return requests.post(url=self.url, data=self.data).json()
	
	#这是停止爬虫的方法
	def cancel(self,project,job_id):
		self.url = "http://%s:%s/cancel.json"%(self.ip,self.port)
		self.data = {
			"project":project,
			"job_id":job_id
		}
		return requests.post(url = self.url, data=self.data).json()
	
	。。。

if __name__=="__main__":
	sa = ScrapydApi()
	sa.schedule("项目名","爬虫名")
	sa.cancel("项目名","job_id")
	。。。

当然 还有其他办法,shell脚本 也是一个不错的选择
或者 Python的 os模块,使用 os.system能直接调用 shell 命令,也能轻松实现。选择适合自己的方法就好了

你可能感兴趣的:(Python,Scrapy)