diff --git a/modules/seloger/browser.py b/modules/seloger/browser.py index ec16367a..77dcb1e5 100644 --- a/modules/seloger/browser.py +++ b/modules/seloger/browser.py @@ -59,9 +59,17 @@ class SeLogerBrowser(BaseBrowser): self.location(self.buildurl('http://ws.seloger.com/search.xml', **data)) - assert self.is_on_page(SearchResultsPage) + while 1: + assert self.is_on_page(SearchResultsPage) - return self.page.iter_housings() + for housing in self.page.iter_housings(): + yield housing + + url = self.page.next_page_url() + if url is None: + return + + self.location(url) def get_housing(self, id, obj=None): self.location(self.buildurl('http://ws.seloger.com/annonceDetail.xml', idAnnonce=id, noAudiotel=1)) diff --git a/modules/seloger/pages.py b/modules/seloger/pages.py index 6116b462..2ecf3dc6 100644 --- a/modules/seloger/pages.py +++ b/modules/seloger/pages.py @@ -29,6 +29,13 @@ __all__ = ['SearchResultsPage', 'HousingPage'] class SearchResultsPage(BasePage): + def next_page_url(self): + urls = self.document.getroot().xpath('//pagesuivante') + if len(urls) == 0: + return None + else: + return urls[0].text + def iter_housings(self): for a in self.document.getroot().xpath('//annonce'): housing = Housing(a.find('idannonce').text)