基本上我有一个非常默认的设置,一个蜘蛛子类CrawlSpider和一个有三个字段的项目看起来像这样:
class AppdexItem(Item):
name = Field()
url = Field()
desc = Field()
Run Code Online (Sandbox Code Playgroud)
当我的蜘蛛解析响应时,它会填充这样的项目:
i = AppdexItem()
name = hxs.select("//h1[@class='doc-banner-title']/text()")
i['name'] = name.extract()[0]
Run Code Online (Sandbox Code Playgroud)
当我读到Field实际上是什么时,我感到很困惑.这实际上是它的实现:
class Field(dict):
"""Container of field metadata"""
Run Code Online (Sandbox Code Playgroud)
这很简单dict.我想知道为什么会这样,并盯着实施一段时间.它仍然没有任何意义.所以我跑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'
Run Code Online (Sandbox Code Playgroud)
什么?无论我在做什么完全错误的(我做的一切像官方教程和实例告诉我的)或者Field是一个dict完全没有意义的.
有人可以向我解释一下吗?
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |