我使用Scrapy 0.22。我有一个使用项目加载器来提取项目的蜘蛛。当我从scrapy shell运行spider时,我只看到包含None的调试消息,而不是我的项目加载器中的项目。
2014-01-26 20:33:08 + 0100 [ChatroomSpider] DEBUG:从< 200 http://somedomain.com/?a=chat_rooms>刮掉 无
但是,如果我取消注释#print item
行,我可以看到项目按预期打印到stdout。
蜘蛛:
class ChatroomSpider(BaseSpider):
name = 'ChatroomSpider'
allowed_domains = ['somedomain.com']
start_urls = ['http://somedomain.com/?a=chat_rooms']
def parse(self, response):
selector = Selector(response)
for chatroom_div in selector.xpath(r'id("body")/div[count(div) = 4 and div/div]'):
loader = ChatroomLoader(chatroom_div)
chatroom = loader.load_item()
#print chatroom
yield chatroom
装载机:
class ChatroomLoader(XPathItemLoader):
default_item_class = ChatRoomItem
name_in = Encode(encoding='utf-8')
name_out = TakeFirst()
description_in = StripAndEncode(encoding='utf-8')
description_out = TakeFirst()
datetime_in = StrpTime('%d.%m.%Y %H:%M:%S')
datetime_out = TakeFirst()
def __init__(self, room_selector):
super(ChatroomLoader, self).__init__(selector=room_selector)
self.add_xpath('name', r'div[1]/div/font/b/a/text()')
self.add_xpath('description', r'div[2]/div/text()')
self.add_xpath('users', r'div[3]/div/a/font/text()')
self.add_xpath('datetime', r'id("copyright")/text()[4]', re=r'[0-3]?[0-9].[0-2][0-9].201[3-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]')
答案 0 :(得分:1)
如果您使用自己的管道,请确保从中返回项目。
有关管道的更多信息; http://doc.scrapy.org/en/latest/topics/item-pipeline.html