84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
在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'}
from scrapy.loader.processors import TakeFirst
...... followees = Field(output_processor=Compose(lambda x: x[1:]))
在 scrapy.loader.processors加个类试试。
我是找到TakeFirst类,然后在后面加上
然后在item.py中导入TakeSecond使用
然后运行结果
from scrapy.loader.processors import TakeFirst