我正在尝试部署我的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
答案 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
添加注册路径。