使用scrapyd api的python包装器
python-scrapyd-api的Python项目详细描述
python scrapyd api
当前发布的版本:2.1.2(请参见history)。
允许python应用程序与 Scrapy后台程序:Scrapyd。
- 支持Python2.6、2.7、3.3和3.4
- 免费软件:BSD许可证
- Full documentation
- 在Python Package Index (PyPI)
- 斯拉皮德的API Documentation
安装
最简单的安装方法是通过pip
:
pip install python-scrapyd-api
快速使用
请参阅full documentation了解更多详细用法,但要开始使用,请执行以下操作:
>>>fromscrapyd_apiimportScrapydAPI>>>scrapyd=ScrapydAPI('http://localhost:6800')
添加项目egg作为新版本:
>>>egg=open('some_egg.egg','rb')>>>scrapyd.add_version('project_name','version_name',egg)# Returns the number of spiders in the project.3>>>egg.close()
取消计划的作业:
>>>scrapyd.cancel('project_name','14a6599ef67111e38a0e080027880ca6')# Returns the "previous state" of the job before it was cancelled: 'running' or 'pending'.'running'
删除项目和所有同级版本:
>>>scrapyd.delete_project('project_name')# Returns True if the request was met with an OK response.True
删除项目的版本:
>>>scrapyd.delete_version('project_name','version_name')# Returns True if the request was met with an OK response.True
请求作业的状态:
>>>scrapyd.job_status('project_name','14a6599ef67111e38a0e080027880ca6')# Returns 'running', 'pending', 'finished' or '' for unknown state.'running'
列出所有已注册的作业:
>>>scrapyd.list_jobs('project_name')# Returns a dict of running, finished and pending job lists.{'pending':[{u'id':u'24c35...f12ae',u'spider':u'spider_name'},],'running':[{u'id':u'14a65...b27ce',u'spider':u'spider_name',u'start_time':u'2014-06-17 22:45:31.975358'},],'finished':[{u'id':u'34c23...b21ba',u'spider':u'spider_name',u'start_time':u'2014-06-17 22:45:31.975358',u'end_time':u'2014-06-23 14:01:18.209680'}]}
列出所有已注册的项目:
>>>scrapyd.list_projects()[u'ecom_project',u'estate_agent_project',u'car_project']
列出给定项目可用的所有蜘蛛:
>>>scrapyd.list_spiders('project_name')[u'raw_spider',u'js_enhanced_spider',u'selenium_spider']
列出注册到给定项目的所有版本:
>>>scrapyd.list_versions('project_name'):[u'345',u'346',u'347',u'348']
计划作业与特定的蜘蛛一起运行:
# Schedule a job to run with a specific spider.>>>scrapyd.schedule('project_name','spider_name')# Returns the Scrapyd job id.u'14a6599ef67111e38a0e080027880ca6'
计划在传递覆盖设置时运行作业:
>>>settings={'DOWNLOAD_DELAY':2}>>>scrapyd.schedule('project_name','spider_name',settings=settings)u'25b6588ef67333e38a0e080027880de7'
将作业调度为在将额外属性传递给蜘蛛初始化时运行:
>>>scrapyd.schedule('project_name','spider_name',extra_attribute='value')# NB: 'project', 'spider' and 'settings' are reserved kwargs for this# method and therefore these names should be avoided when trying to pass# extra attributes to the spider init.u'25b6588ef67333e38a0e080027880de7'
设置项目以贡献代码
请看CONTRIBUTING.md。这将引导您完成我们的请求 指导方针,项目设置和测试要求。
许可证
2条款BSD。请参阅完整的LICENSE。
历史记录
2.1.1(2018-04-01)
- 转换为降价的基本文档集(自述、作者、贡献者、历史记录)
2.1.0(2018-03-31)
- 引入
timeout
关键字参数,该参数允许调用方指定 向scrapyd服务器发送请求的超时时间。它的工作原理是 根据潜在的requests
库,并提高requests.exceptions.Timeout
超过超时时。有关用法,请参见文档。
2.0.1(2016-02-27)
v2.0.0附带的文档因取消而稍微过期 端点,此版本更正了这一点。
2.0.0(2016-02-27)
为什么是版本2?该包装已生产就绪,使用稳定 已经有一年多了,所以它已经准备好提交一个稳定的api/w版本。 版本1被故意跳过,以明确说明 此版本包含中断更改:
中断更改:
- 取消作业终结点现在返回
取消了spider而不是简单的布尔值true/false。这个变化是
制作原因:
a)布尔值返回相对无用,实际上隐藏了数据
scrapyd api作为cancel端点响应的一部分传递给我们。
b)在此更改之前,只有在
取消的作业以前正在运行,这导致我们错误地
当pending作业被取消时报告
False
。 这可能不需要更改代码库,但这是一个更改 在一个公共的api中,因此需要主版本碰撞。
其他更改:
- cancel作业终结点现在接受一个
signal
关键字参数,它是 scrapyd用来取消蜘蛛作业的终止信号。如果没有 指定时,该值根本不会发送到scrapyd终结点,因此 允许scrapyd控制使用哪个默认信号(当前为TERM
)。
0.2.0(2015-01-14)
- 添加了新的
job_status
方法,该方法可以检索 项目中的特定作业。有关用法,请参见文档。 - 增加和改进测试覆盖率。
0.1.0(2014-09-16)
- 第一个版本是pypi。