【问题标题】:Scrapy ImportError: No module named ItemScrapy ImportError:没有名为Item的模块
【发布时间】:2016-10-13 13:42:29
【问题描述】:

我知道这个问题已经被广泛讨论,但我没有找到答案。我收到错误 ImportError: No module named items。我用 $ scrapy startproject pluto 创建了一个新项目,但我没有相同的名称(在项目、类等名称中),以避免problem with naming

pluto_spider.py

import scrapy
from items import PlutoItem

class PlutoSpider(scrapy.Spider):
  name = "plutoProj"

  allowed_domains = ['successories.com']
  start_urls = [
        'http://www.successories.com/iquote/category/39/inspirational-quotes/4',
        'http://www.successories.com/iquote/category/39/inspirational-quotes/6',
        ]

def parse(self,response):

  items = []

  for quote in response.css('div.quotebox'):
    item = PlutoItem()
    item['author'] =  quote.css('span.author a::text').extract_first()
    item['quote'] = quote.css('div.quote a::text').extract_first()
    items.append(item)
    return items

item.py

import scrapy

class PlutoItem(scrapy.Item):
  author = scrapy.Field()
  quote = scrapy.Field()

这是我的文件夹的层次结构:

/pluto
/pluto/scrapy.cfg
/pluto/pluto/__init__.pyc
/pluto/pluto/__init__.py
/pluto/pluto/items.py
/pluto/pluto/pipelines.py
/pluto/pluto/settings.py
/pluto/pluto/settings.pyc
/pluto/pluto/spiders/__init__.py
/pluto/pluto/spiders/__init__.pyc
/pluto/pluto/spiders/pluto_spider.py
/pluto/pluto/spiders/pluto_spider.pyc

【问题讨论】:

  • 您的模块名称是item.py 还是items.py?我看到你用两个名字引用了同一个文件。
  • 您从哪个目录执行 `scrapy crawl xxx'(或任何其他命令)?
  • 你能试试from pluto import items和/或import ..items

标签: python scrapy


【解决方案1】:

您的items.pypluto_spider.py 似乎处于不同的级别。您应该导入 from pluto import items 或相对导入 import ..items per PEP 328 以导入模块。

如果你想上课from pluto.items import PlutoItem

【讨论】:

    【解决方案2】:

    首先,确保从项目的顶级目录中执行 Scrapy 命令

    或者您也可以尝试将导入更改为:

    from pluto.items import PlutoItem
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2012-12-07
      • 2012-05-23
      • 2019-07-29
      • 2015-07-04
      相关资源
      最近更新 更多