【问题标题】:Import functions in a different file while using scrapyd使用scrapyd时在不同文件中导入函数
【发布时间】:2015-08-04 11:04:09
【问题描述】:

我正在使用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 包中的scrapyd-deploy scrapyd-client

scrapyd-deploy my_spider

在向scrapyd 发送请求时,是否可以包含def.py 文件或包含函数?

我不希望蜘蛛拥有数百行代码。

【问题讨论】:

  • 您是否尝试将您的def.py 放入您的spider 文件夹中?您仍然可以使用projectname.spiders.def import def.py 导入它

标签: python web-scraping scrapy scrapyd


【解决方案1】:

它可能在本地工作的原因是因为您可能从您的函数文件所在的同一目录运行命令。

scrapyd-deploy 仅部署项目内的文件,因此将带有 util 函数的文件移动到项目内,它将被部署到 scrapyd。

您可能希望使用更具描述性的名称,例如 utils.py 而不是 def.py,并从导入中删除 .py 扩展名,以避免与 def 关键字的语法冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多