我正在使用scrapy 0.20。
我想使用项目加载器
这是我的代码:
l = XPathItemLoader(item=MyItemClass(), response=response)
l.add_value('url', response.url)
l.add_xpath('title',"my xpath")
l.add_xpath('developer', "my xpath")
return l.load_item()
我在json文件中得到了结果。 url
是一个列表。 title
是一个列表。 developer
是一个列表。
如何提取单个值而不是列表?
我应该为此制作项目管道吗?我希望有更快的方法
答案 0 :(得分:27)
您需要设置Input or Output processor。 TakeFirst
可以完美地适用于您的情况。
您可以在多个地方定义它,例如在Item
定义中:
from scrapy.item import Item, Field
from scrapy.loader.processors import TakeFirst
class MyItem(Item):
url = Field(output_processor=TakeFirst())
title = Field(output_processor=TakeFirst())
developer = Field(output_processor=TakeFirst())
或者,在XpathItemLoader()
个实例上设置default_output_processor
:
l.default_output_processor = TakeFirst()