使用 ItemLoader 但在 Scrapy 中添加 XPath、值等
Using ItemLoader but adding XPath, values etc. in Scrapy
目前我正在使用 XPathItemLoader
来抓取数据:
def parse_product(self, response):
items = []
l = XPathItemLoader(item=MyItem(), response=response)
l.default_input_processor = MapCompose(lambda v: v.split(), replace_escape_chars)
l.default_output_processor = Join()
l.add_xpath('name', 'div[2]/header/h1/text()')
items.append(l.load_item())
return items
并且需要 v.split()
来去除一些空格 - 效果很好。
但是我现在怎么添加时间呢?
l.add_value('time', time())
只会导致错误:
exceptions.AttributeError: 'float' object has no attribute 'split'
这是因为您正在设置默认输入和输出处理器,它适用于所有项目字段,包括 time
,它是 float
。
您有多种选择:
而不是默认处理器,使用特定于字段的处理器:
l.name_in = MapCompose(lambda v: v.split(), replace_escape_chars)
l.name_out = Join()
convert/format时间转换成字符串:
l.add_value('time', str(time()))
保留默认处理器并配置 Identity
输入和输出处理器:
l.time_in = Identity()
l.time_out = Identity()
目前我正在使用 XPathItemLoader
来抓取数据:
def parse_product(self, response):
items = []
l = XPathItemLoader(item=MyItem(), response=response)
l.default_input_processor = MapCompose(lambda v: v.split(), replace_escape_chars)
l.default_output_processor = Join()
l.add_xpath('name', 'div[2]/header/h1/text()')
items.append(l.load_item())
return items
并且需要 v.split()
来去除一些空格 - 效果很好。
但是我现在怎么添加时间呢?
l.add_value('time', time())
只会导致错误:
exceptions.AttributeError: 'float' object has no attribute 'split'
这是因为您正在设置默认输入和输出处理器,它适用于所有项目字段,包括 time
,它是 float
。
您有多种选择:
而不是默认处理器,使用特定于字段的处理器:
l.name_in = MapCompose(lambda v: v.split(), replace_escape_chars) l.name_out = Join()
convert/format时间转换成字符串:
l.add_value('time', str(time()))
保留默认处理器并配置
Identity
输入和输出处理器:l.time_in = Identity() l.time_out = Identity()