scrapy item loader返回列表不是单个值

时间:2014-05-27 16:09:42

标签: python python-2.7 web-scraping scrapy

我正在使用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是一个列表。

如何提取单个值而不是列表?

我应该为此制作项目管道吗?我希望有更快的方法

1 个答案:

答案 0 :(得分:27)

您需要设置Input or Output processorTakeFirst可以完美地适用于您的情况。

您可以在多个地方定义它,例如在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()