There is an undocumented method that I found out when I had to skip an element during parsing, but not outside the callback function.
Just raise StopIteration anywhere during parsing.
class MySpider(Spider): def parse(self, response): value1 = parse_something1() value2 = parse_something1() yield Item(value1, value2) def parse_something1(self): try: return get_some_value() except Exception: self.skip_item() def parse_something2(self): if something_wrong: self.skip_item() def skip_item(self): raise StopIteration
source share