From 3f2d8ae1855dcda4798bf0384aeac552c23083f1 Mon Sep 17 00:00:00 2001 From: Laurent Bachelier Date: Tue, 1 Jul 2014 15:37:05 +0200 Subject: [PATCH] Allow for a custom element finder And end up with less duplicate code! --- weboob/tools/browser2/page.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/weboob/tools/browser2/page.py b/weboob/tools/browser2/page.py index fcd9074401..1d3ffa316d 100644 --- a/weboob/tools/browser2/page.py +++ b/weboob/tools/browser2/page.py @@ -662,16 +662,23 @@ def __call__(self, *args, **kwargs): return self.__iter__() - def __iter__(self): - self.parse(self.el) - + def find_elements(self): + """ + Get the nodes that will have to be processed. + This method can be overridden if xpath filters are not + sufficient. + """ if self.item_xpath is not None: for el in self.el.xpath(self.item_xpath): - for obj in self.handle_element(el): - if not self.flush_at_end: - yield obj + yield el else: - for obj in self.handle_element(self.el): + yield self.el + + def __iter__(self): + self.parse(self.el) + + for el in self.find_elements(): + for obj in self.handle_element(el): if not self.flush_at_end: yield obj -- GitLab