cari

Rumah  >  Soal Jawab  >  teks badan

python - Scrapy ItemLoader如何选择返回结果list中的第二个以及以后的值?

在items.py中加入:

from scrapy.loader.processors import TakeFirst
    ......
    # 修改为以下内容
    followees = Field(output_processor=TakeFirst())

其他的不用改变,在spiders中的代码不需要改变

亟待解决:问题是第二个怎么选以及之后的几个?

PHP中文网PHP中文网2811 hari yang lalu320

membalas semua(2)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-17 17:45:35

    Cuba tambahkan kelas pada scrapy.loader.processors.
    Saya menjumpai kelas TakeFirst dan kemudian menambah

    selepas itu
    #第二个数据
    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'}

    balas
    0
  • 迷茫

    迷茫2017-04-17 17:45:35

    daripada scrapy.loader.processors import TakeFirst

    ......
    followees = Field(output_processor=Compose(lambda x: x[1:]))

    balas
    0
  • Batalbalas