目前我正在使用 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'
最佳答案
这是因为您正在设置默认输入和输出处理器,该处理器适用于所有项目字段,包括时间
,它是一个浮点
。
您有多种选择:
使用特定于字段的处理器而不是默认处理器:
l.name_in = MapCompose(lambda v: v.split(), replace_escape_chars) l.name_out = Join()
将时间转换/格式化为字符串:
l.add_value('time', str(time()))
保留默认处理器不变并配置
Identity
输入和输出处理器:l.time_in = Identity() l.time_out = Identity()
关于python - 使用 ItemLoader 但在 Scrapy 中添加 XPath、值等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30140574/