在items.py中加入:
from scrapy.loader.processors import TakeFirst ...... # 修改为以下内容 followees = Field(output_processor=TakeFirst())
其他的不用改变,在spiders中的代码不需要改变
亟待解决:问题是第二个怎么选以及之后的几个?
认证高级PHP讲师
在 scrapy.loader.processors加個類試試。 我是找到TakeFirst類,然後在後面加上
#第二个数据 class TakeSecond(object): def __call__(self, values): for i in range(len(values)): if i == 1 : if values[i] is not None and values[i] != '': return values[i]
然後在item.py中導入TakeSecond使用
name = scrapy.Field( input_processor=MapCompose(remove_tags), output_processor=Join(), ) price = scrapy.Field( input_processor=MapCompose(remove_tags, filter_price), output_processor=TakeSecond(), )
然後運行結果
>>> from scrapy.loader import ItemLoader >>> from tutorial.items import Product >>> il = ItemLoader(item=Product()) >>> il.add_value("price", ['333','444']) >>> il.load_item() {'price': u'444'}
從 scrapy.loader.processors 導入 TakeFirst
在 scrapy.loader.processors加個類試試。
我是找到TakeFirst類,然後在後面加上
然後在item.py中導入TakeSecond使用
然後運行結果
從 scrapy.loader.processors 導入 TakeFirst
雷雷