С items.py
определяется:Scrapy: Если ключ существует, почему я получаю KeyError?
import scrapy
class CraigslistSampleItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
и заполнение каждого элемента с помощью паука таким образом:
item = CraigslistSampleItem()
item["title"] = $someXpath.extract()
item["link"] = $someOtherXpath.extract()
Когда я добавить их в список (возвращенного синтаксического анализа()) и хранить это, как, например, csv, я получаю два столбца данных, заголовок и link, как и ожидалось. Если я прокомментирую XPath за ссылкой и сохранил как csv, я все равно получаю два столбца данных, при этом значения в столбце ссылок являются пустыми строками. Это кажется разумным, поскольку оба названия и ссылки являются атрибутами каждого класса CraigslistSampleItem. Я думаю, то, что я мог бы сделать что-то вроде этого (с помощью 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'
Если каждый экземпляр экземпляра действительно имеет значение для ссылки (пусть и пустую строку), почему я не могу получить доступ к этому ключу?