Scrapy學習中解決No module named tutorial.items問題

弈心逐夢發表於2018-01-25

初學Scrapy,開始以為是官網教程很坑爹的有錯,仔細排查後發現還是自己太粗心。
(版本問題:2018-1-25,python 2.7.11)
報錯:No module named tutorial.items

解決問題注意兩點:
1. 引入items的路徑。items包實際是在上一級目錄的,直接對著教程操作容易忽略這個問題
2. tutorial.items 這個匯入包,不知為何不識別,只能以..items 的方式匯入。
3. 重點:items檔案中需要新增程式碼,這個我在看手冊時忽略了。新增內容如下:

import scrapy


class DmozItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()
    pass

正確匯入,解決問題。

# 這樣不行:from ..tutorial.items import *

# 正確引入程式碼如下:
from ..items import *

在scrapy目錄下執行命令:
\turorial\spiders>scrapy crawl dmoz -o items.json
測試發現返回200OK
這裡寫圖片描述
再看下items.json 的檔案內容:
這裡寫圖片描述

結果滿足預期。

附:程式碼全文

import scrapy
from ..items import DmozItem

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["yixzm.cn"]
    start_urls = [
            "http://www.yixzm.cn"
    ]

    def parse(self, response):
        for sel in response.xpath('//ul/li'):
            item = DmozItem()
            item['title'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()
            item['desc'] = sel.xpath('text()').extract()
            yield item

相關文章