Rumah > Soal Jawab > teks badan
在items.py中加入:
from scrapy.loader.processors import TakeFirst
......
# 修改为以下内容
followees = Field(output_processor=TakeFirst())
其他的不用改变,在spiders中的代码不需要改变
亟待解决:问题是第二个怎么选以及之后的几个?
大家讲道理2017-04-17 17:45:35
Cuba tambahkan kelas pada scrapy.loader.processors.
Saya menjumpai kelas TakeFirst dan kemudian menambah
#第二个数据
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]
Kemudian import TakeSecond dalam item.py dan gunakan
name = scrapy.Field(
input_processor=MapCompose(remove_tags),
output_processor=Join(),
)
price = scrapy.Field(
input_processor=MapCompose(remove_tags, filter_price),
output_processor=TakeSecond(),
)
Kemudian jalankan hasilnya
>>> 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'}
迷茫2017-04-17 17:45:35
daripada scrapy.loader.processors import TakeFirst
......
followees = Field(output_processor=Compose(lambda x: x[1:]))