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

Mar*_*oli 17 python scrapy web-scraping python-2.7

我正在使用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()
Run Code Online (Sandbox Code Playgroud)

我在json文件中得到了结果.这url是一个清单.这title是一个清单.这developer是一个清单.

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

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

ale*_*cxe 31

您需要设置输入或输出处理器.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())
Run Code Online (Sandbox Code Playgroud)

或者,default_output_processorXpathItemLoader()实例上设置:

l.default_output_processor = TakeFirst()
Run Code Online (Sandbox Code Playgroud)