scrapyd:如何将文件包含到deployd包中?

问题描述 投票:0回答:1

我可以在本地运行一个爬虫,从scrapy项目中的本地文件读取一些输入。用scrapyd-deploy部署失败,因为本地文件不在包里。

在scrapy项目内部,打开一个文件。

with open('imports/filter.csv', newline='') as f:
    for row in csv.reader(f):

setup.py

from setuptools import setup, find_packages

setup(
    name         = 'test',
    version      = '1.0',
    packages     = find_packages(),
    entry_points = {'scrapy': ['settings = crawler.settings']},
    include_package_data = True,
    package_data={'': ['imports/*.csv']}
)

package_data 和 include_package_data 不知为何没有任何效果。

 in GetbidSpider\nFileNotFoundError: [Errno 2] No such file or directory: 'imports/filter.csv'\n"}

如何在项目中不使用绝对路径的情况下包含文件?

scrapy scrapyd scrapyd-deploy
1个回答
0
投票

这解决了我的问题。

package_data={
    'crawler': ['imports/*.csv', 'resources/*',]
},    
entry_points = {'scrapy': ['settings = crawler.settings']},
zip_safe=False,

结合我读取文件的方式的改变

import pkgutil
MatFile = pkgutil.get_data('crawler', 'LILAC_Materials.csv')
dataReader = csv.reader(MatFile.decode('utf-8').splitlines(), delimiter=',')
© www.soinside.com 2019 - 2024. All rights reserved.