在items.py中加入:
from scrapy.loader.processors import TakeFirst
......
# 修改为以下内容
followees = Field(output_processor=TakeFirst())
其他的不用改变,在spiders中的代码不需要改变
亟待解决:问题是第二个怎么选以及之后的几个?
大家讲道理2017-04-17 17:45:35
在 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'}