我正在使用 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
是一个列表。
如何提取单个值而不是列表?
我应该为此创建一个项目管道吗?希望有更快的方法
你需要设置一个输入或输出处理器 http://doc.scrapy.org/en/latest/topics/loaders.html#declaring-input-and-output-processors. TakeFirst http://doc.scrapy.org/en/latest/topics/loaders.html#scrapy.contrib.loader.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())
或者,设置一个default_output_processor http://doc.scrapy.org/en/latest/topics/loaders.html#scrapy.contrib.loader.ItemLoader.default_output_processor on a XpathItemLoader()
实例:
l.default_output_processor = TakeFirst()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)