在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
雷雷