1

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

有没有办法使用 a relative pathyaml file即使蜘蛛被部署了scrapyd

PS:部署
在: spiderscrapyd

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
4

2 回答 2

1

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

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
于 2014-04-22T10:29:55.140 回答
0

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

简而言之,您必须static filessetup.py.

于 2014-04-22T11:35:31.297 回答