6

私はRSSスパイダーをやっています。現在のアイテムに一致するものがない場合、現在のノードを無視してスパイダーの実行を続行したい...これまでのところ、次のようになっています。

        if info.startswith('Foo'):
            item['foo'] = info.split(':')[1]
        else:
            return None

(info は、以前に xpath からサニタイズされた文字列です...)

しかし、私はこの例外を受けています:

    exceptions.TypeError: You cannot return an "NoneType" object from a

クモ

では、このノードを無視して実行を続行するにはどうすればよいでしょうか?

4

2 に答える 2

16
parse(response):
    #make some manipulations
    if info.startswith('Foo'):
            item['foo'] = info.split(':')[1]
            return [item]
        else:
            return []

But better is not use return, use yield or do nothing

parse(response):
    #make some manipulations
    if info.startswith('Foo'):
            item['foo'] = info.split(':')[1]
            yield item
        else:
            return
于 2011-02-18T13:32:37.023 に答える