2016-10-13 76 views
0

我知道這個問題已經被廣泛討論,但是我沒有找到答案。我收到錯誤ImportError:沒有名爲項目的模塊。我創建了一個新項目$ scrapy startproject pluto我沒有相同的名字(在項目名稱,類別等),以避免problem with namingScrapy ImportError:沒有模塊名爲Item

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 
+3

是您的模塊名稱'item.py'或'items.py'?我看到你已經用這兩個名字引用了同一個文件。 – sytech

+1

從哪個目錄執行'scrapy crawl xxx'(或任何其他命令)? – jatinderjit

+1

你可以嘗試'從冥王星進口項目'和/或'進口..items' – sytech

回答

1

它看起來像你的items.pypluto_spider.py處於不同的層次。您應該輸入from pluto import items或相對導入import ..itemsPEP 328導入模塊。

如果你想在類from pluto.items import PlutoItem

+0

非常感謝! –

1

首先,確保從項目頂層目錄中執行Scrapy命令。

或者你也可以嘗試改變你的進口:

from pluto.items import PlutoItem 
+0

太棒了!非常感謝!有用! –

相關問題