【问题标题】:scrapy crawl [spider-name] faultscrapy crawl [spider-name] 错误
【发布时间】:2013-08-01 10:53:22
【问题描述】:

大家好,我正在使用 scrapy 框架和 python 构建一个网络抓取项目。 在我项目的蜘蛛文件夹中,我有两个名为 spider1 和 spider2 的蜘蛛

spider1.py

class spider(BaseSpider):
    name= "spider1"
    ........
    ........

spider2.py

class spider(BaseSpider):
    name="spider2"
    ............
    ...........

settings.py

SPIDER_MODULES = ['project_name.spiders']
NEWSPIDER_MODULE = ['project_name.spiders']
ITEM_PIPELINES = ['project_name.pipelines.spider']

现在,当我在我的根项目文件夹中编写命令 scrapy crawl spider1 时,它调用的是 spider2.py 而不是 spider1.py。当我从我的项目中删除 spider2.py 时,它会调用 spider1.py

前 1 天恢复正常工作 1 个月,但突然发生了什么我无法弄清楚,请帮帮我

【问题讨论】:

  • 当你重命名类时会发生什么,即将spider1.py中的class spider(BaseSpider):...更改为class Spider1(BaseSpider):...,spider2.py中的class Spider2(BaseSpider):...
  • 如果我在两个蜘蛛中更改类名,什么都不会发生
  • 尝试清除所有 *.pyc 文件并确保您在“名称”属性中为蜘蛛指定了不同的名称。
  • 我已尝试清理所有 *.pyc 文件
  • 还有一件奇怪的事情正在发生@Sjaak。我已经清理了 spider1.pyc、spider2.pyc 和 init.pyc。现在,当我在项目的根目录中运行 scrapy crawl spider1 时,它实际上运行的是 spider2.py 但生成的是 spider1.pyc 文件而不是 spider2.pyc

标签: web-crawler scrapy


【解决方案1】:

我解决了同样的问题,但是从我的项目中的所有位置删除所有 *.pyc 文件完成了这项工作。

特别是我认为 settings.pyc 很重要,需要删除。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    以 Nomad 的回答为基础。 您可以通过添加以下内容来避免在开发过程中创建一个 pyc 文件以外的所有文件:

    import sys
    sys.dont_write_bytecode = True
    

    到项目的“__init__.py”文件。

    这将阻止创建 .pyc 文件。如果您正在处理一个项目并重命名蜘蛛的文件名,则特别有用。防止保留旧蜘蛛的缓存 pyc,以及其他一些问题。

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 2015-02-14
      • 2022-10-24
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2012-04-10
      相关资源
      最近更新 更多