scrapy新手:教程dmozItem不支持字段:标题

Dan*_*Vim 0 python scrapy

import scrapy
from tutorial.items import DmozItem

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    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
Run Code Online (Sandbox Code Playgroud)

最近在学习Scrapy。当我测试教程时。我只是从文档中复制代码,但效果不佳,显示错误:

Traceback (most recent call last):
File "C:\Python27\lib\site-packages\scrapy\utils\defer.py", line 102, in iter_errback
yield next(it)
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\offsite.py", line 28, in process_spider_output
for x in result:
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\referer.py", line 22, in <genexpr>
return (_set_referer(r) for r in result or ())
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\urllength.py", line 37, in <genexpr>
return (r for r in result or () if _filter(r))
File "C:\Python27\lib\site-packages\scrapy\spidermiddlewares\depth.py", line 54, in <genexpr>
return (r for r in result or () if _filter(r))
File "C:\Users\DannyVim\Desktop\scrapy learning\tutorial\tutorial\spiders\dmoz_spider.py", line 17, in parse
item['title'] = sel.xpath('a/text()').extract()
File "C:\Python27\lib\site-packages\scrapy\item.py", line 63, in __setitem__
(self.__class__.__name__, key))
KeyError: 'DmozItem does not support field: title'
Run Code Online (Sandbox Code Playgroud)

我的 items.py 写法如下:

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
Run Code Online (Sandbox Code Playgroud)

我不知道这是怎么回事。我发现这方面的信息很少。那么,有人可以帮助我吗?

fur*_*ras 5

你忘()了在scrapy.Field()