我可以在本地运行一个爬虫,从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"}
如何在项目中不使用绝对路径的情况下包含文件?
这解决了我的问题。
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=',')