Scrapy - 在蜘蛛内部加载一个带有相对路径的yaml文件

时间:2014-04-21 11:32:49

标签: python scrapy yaml scrapyd

我正在尝试部署我的scrapy crawlers,但问题是我有一个yaml file,我正试图从spider内部加载, 当从shell加载蜘蛛时,这是有效的:scrapy crawl <spider-name>。 但是当蜘蛛部署在scrapyd内时,yaml文件的路径必须是absolute

是否可以使用relative path yaml file,即使使用scrapyd部署蜘蛛?

P.S
spider部署在scrapyd上:

scrapyd-deploy default -p <project-name>
curl http://127.0.0.1:6800/schedule.json -d project=<project-name> -d spider=<spider-name>

yaml文件加载了:

with open('../categories/categories.yaml', 'r') as f:
    pass

2 个答案:

答案 0 :(得分:0)

相对路径相对于当前工作目录(启动脚本的目录)。如果要从相对于当前脚本位置的路径加载文件,可以尝试以下操作:

root_dir = os.path.abspath(os.path.dirname(__file__))
yaml_path = os.path.join(root_dir, '../categories/categories.yaml')
with open(yaml_path, 'r') as f:
    pass

答案 1 :(得分:0)

我在这里找到答案:scrapyd and file (pkgutil.get_data)

简而言之,您必须在static files中为这些setup.py添加注册路径。