【问题标题】:Scrapy: ImportError: No module named pipelinesScrapy:ImportError:没有名为管道的模块
【发布时间】:2017-07-25 22:27:26
【问题描述】:

我在让我的抓取工具加载项目管道时遇到问题。在我尝试添加自定义管道时,我收到以下错误:

ImportError: No module named pipelines

我已经尝试过文档,但它并没有真正解释如何设置ITEM_PIPELINE 选项路径。这是文档中的示例:

ITEM_PIPELINES = {
    'myproject.pipelines.PricePipeline': 300,
    'myproject.pipelines.JsonWriterPipeline': 800,
}

myproject 来自哪里?

下面是我的应用的目录结构:

├── README.md
├── bot.py
├── data
│   └── formax.json
├── pipelines
│   ├── FormaxPipeline.py
│   └── __init__.py
├── praw.ini
├── requirements.txt
└── scrapers
    ├── __init__.py
    ├── formax.py

formax.py 类中我设置了一些设置。

custom_settings = {
    'ITEM_PIPELINES': {
        'pipelines.FormaxPipeline': 100
    },
    'USER_AGENT': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
}

我是这样从根目录运行的:

scrapy runspider scrapers/formax.py -o data/formax.json

刮板失败并出现以下错误:

ImportError: No module named pipelines

如何将自定义管道添加到设置中?

【问题讨论】:

    标签: python python-2.7 scrapy scrapy-spider


    【解决方案1】:

    有几件事。首先,Scrapy 在这里希望您拥有标准的 Scrapy project structure,其中 myproject 是您的项目名称(以及该项目文件夹的名称)。

    其次,ITEM_PIPELINES 需要您指定管道的类,据我所知(您的应用程序的结构和您的 custom_settings)您指定的只是模块。您应该在 ITEM_PIPELINES 设置中使用 pipelines.FormaxPipeline.FormaxPipeline 而不是 pipelines.FormaxPipeline。 (这里我假设你的类名为 FormaxPipeline 并在 FormaxPipeline.py 文件中定义。)

    但实际的错误来自 Scrapy 无法定位模块。不知道如何更干净地解决它,因为您已经做了一些 Scrapy 没有预料到的事情(没有项目结构),但一种解决方法是以这种方式运行蜘蛛:

    PYTHONPATH="$PYTHONPATH:." scrapy runspider scrapers/formax.py -o data/formax.json
    

    即告诉 Python 在哪里寻找你的代码。

    【讨论】:

      【解决方案2】:

      老问题,但我遇到了完全相同的问题,这让我死了好几个小时!我在蜘蛛类中设置了 custom_settings 变量,并且在 pipeline.py 文件中定义了一个管道类,该文件位于几个文件夹中。然后,像你一样,我做了一些事情:“myprojname.pipelines.CsvPipeline”和它的变体。每次我得到模块错误。

      然后我意识到了一些事情。在文档中,他们可能假设您将其设置在 settings.py 文件中,而不是在蜘蛛类中的 custom_settings 变量中(我看到您没有在此处包含设置文件,但它带有scrapy startproject 命令,我敢肯定)。所以,相反,我在我的蜘蛛文件所在的同一个文件夹中创建了一个名为 pipelines.py 的文件。然后我只是做了“pipelines.CsvPipeline”,它工作了!

      所以,我也尝试在常规设置中进行设置。在这里我运行我的蜘蛛时没有任何抱怨,但它似乎也没有使用它。所以这不是我的选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 2018-08-21
        • 2022-11-02
        • 1970-01-01
        • 2020-01-15
        • 1970-01-01
        相关资源
        最近更新 更多