实施自己的scrapyd服务

时间:2015-03-09 19:39:23

标签: python scrapy scrapyd

我想为scrapyd API创建自己的服务,它应该返回有关运行爬虫的更多信息。我一开始就陷入困境:我应该放置模块,它将包含该服务。如果我们查看默认的“scrapyd.conf”,它有一个名为services的部分:

[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

所以这是scrapyd包中每个服务的绝对路径,它放在dist-packages文件夹中。有没有办法放置我自己的模块,包含不在dist-packages文件夹中的服务?

UPD。 意识到这个问题可能不清楚。 Scrapy是一个用于解析网站数据的框架。我有一个简单的django网站,我可以从那里开始/停止特定区域的爬虫等(http://54.186.79.236它是俄语)。使用crawyd API进行爬虫操作。默认情况下,它只有一些API用于启动/停止/列表抓取工具及其日志等。此API列在此文档的http://scrapyd.readthedocs.org/en/latest/api.html中 所以上面是一个小介绍,现在的问题。我想扩展现有的API以从运行的爬虫中检索更多信息,并在我上面提到的网站中呈现它。为此,我需要继承现有的scrapyd.webservice.WsResource并编写服务。如果我将该服务模块放在'sys.path'路径中,那么该部分就可以了。但我想将此服务包含在scrapy项目文件夹中的模块(出于某种美学原因)。所以,如果我把它保留在那里,它(可预测地)在scrapyd启动时“没有模块命名”。

1 个答案:

答案 0 :(得分:0)

所以,我根据this解决了我的问题。