【发布时间】:2015-05-28 15:56:31
【问题描述】:
定义items.py:
import scrapy
class CraigslistSampleItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
并通过蜘蛛填充每个项目:
item = CraigslistSampleItem()
item["title"] = $someXpath.extract()
item["link"] = $someOtherXpath.extract()
当我将这些附加到列表(由 parse() 返回)并将其存储为例如一个 csv,我得到两列数据,title 和 link,正如预期的那样。如果我注释掉 link 的 XPath 并存储为 csv,我仍然会得到两列数据,其中链接列中的值是空字符串。这似乎是合理的,因为标题和链接都是每个 CraigslistSampleItem 类的属性。那么,我认为我可以做这样的事情(link 的 XPath 仍然被注释掉):
if item["link"] == '':
print "link has not been given a value"
但尝试获取每个项目的链接属性因此失败:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scrapy/item.py", line 50, in __getitem__
return self._values[key]
exceptions.KeyError: 'link'
如果每个项目实例确实有一个链接值(尽管是一个空字符串),为什么我不能访问这个键?
【问题讨论】:
标签: python list key scrapy scrapy-spider