基本上我有一个非常默认的设置,一个从CrawlSpider子类化的蜘蛛和一个有三个字段的项目,如下所示:
class AppdexItem(Item):
name = Field()
url = Field()
desc = Field()
当我的蜘蛛解析响应时,它会填充这样的项目:
i = AppdexItem()
name = hxs.select("//h1[@class='doc-banner-title']/text()")
i['name'] = name.extract()[0]
当我读到Field实际上是什么时,我感到很困惑.这实际上是its implementation:
class Field(dict):
"""Container of field metadata"""
这是一个简单的单词.我想知道为什么会这样,并盯着实施一段时间.它仍然没有任何意义.所以我在一个应该被解析成项目的页面上运行scrapy shell,这就是我得到的:
In [16]: item = spider.parse_app(response)
In [17]: item.fields
Out[17]: {'desc': {}, 'name': {}, 'url': {}}
In [18]: item['name']
Out[18]: u'Die Kleine Meerjungfrau'
什么?要么我做了一些完全错误的事情(我做了所有事情,比如官方的教程和例子告诉我)或者字段是一个字典是完全没有意义的.
有人可以向我解释一下吗?