我正在使用scrapy构建一个爬虫,并在运行scrapyd的远程计算机上运行它。我的蜘蛛很长很复杂,因此我将一些函数放在不同的文件def.py
中。
我的项目看起来像这样
./
|-- my_project
| |-- __init__.py
| |-- items.py
| |-- pipelines.py
| |-- settings.py
| `-- spiders
| |-- __init__.py
| |-- spider.py
`-- scrapy.cfg
`-- def.py
我使用以下代码在我的蜘蛛中导入我的函数
from def.py import get_questions
并在我的蜘蛛中使用它。
它在我的本地计算机上运行良好但如果我向scrapyd发送爬网请求,则无法找到def.py
。 (ImportError
)
我使用pypi package scrapyd-deploy
scrapyd-client
scrapyd-deploy my_spider
是否可以在向def.py
发送请求时包含scrapyd
文件或包含这些功能?
我不希望拥有数百行代码的蜘蛛。
答案 0 :(得分:0)
它可能在本地工作的原因是因为您可能正在运行具有该功能的文件的同一目录中的命令。
scrapyd-deploy
仅部署项目中的文件,因此将带有util函数的文件移动到项目内部,并将其部署到scrapyd。
您可能希望使用更具描述性的名称,例如utils.py
而不是def.py
,并从导入中删除.py
扩展名,以避免与def
语法冲突关键字。