diff --git a/modules/boursorama/pages/accounts_list.py b/modules/boursorama/pages/accounts_list.py index 3aeb03a2..04a98bf4 100644 --- a/modules/boursorama/pages/accounts_list.py +++ b/modules/boursorama/pages/accounts_list.py @@ -31,64 +31,64 @@ class AccountsList(Page): pass def get_list(self): - for div in self.document.getiterator('div'): - if div.attrib.get('id', '') == 'synthese-list': - for tr in div.getiterator('tr'): - account = Account() - account.id = None - account._link_id = None - for td in tr.getiterator('td'): - if td.attrib.get('class', '') == 'account-cb': - try: - a = td.xpath('./*/a[@class="gras"]')[0] - except IndexError: - # ignore account - break - account.type = Account.TYPE_CARD - account.label = self.parser.tocleanstring(a) - try: - account._link_id = td.xpath('.//a')[0].attrib['href'] - except KeyError: - pass + blocks = self.document.xpath('//div[@id="synthese-list"]//div[@class="block"]') + for div in blocks: + for tr in div.getiterator('tr'): + account = Account() + account.id = None + account._link_id = None + for td in tr.getiterator('td'): + if td.attrib.get('class', '') == 'account-cb': + try: + a = td.xpath('./*/a[@class="gras"]')[0] + except IndexError: + # ignore account + break + account.type = Account.TYPE_CARD + account.label = self.parser.tocleanstring(a) + try: + account._link_id = td.xpath('.//a')[0].attrib['href'] + except KeyError: + pass - elif td.attrib.get('class', '') == 'account-name': - try: - span = td.xpath('./span[@class="label"]')[0] - except IndexError: - # ignore account - break - account.label = self.parser.tocleanstring(span) - try: - account._link_id = td.xpath('.//a')[0].attrib['href'] - except KeyError: - pass + elif td.attrib.get('class', '') == 'account-name': + try: + span = td.xpath('./span[@class="label"]')[0] + except IndexError: + # ignore account + break + account.label = self.parser.tocleanstring(span) + try: + account._link_id = td.xpath('.//a')[0].attrib['href'] + except KeyError: + pass - elif td.attrib.get('class', '') == 'account-more-actions': - for a in td.getiterator('a'): - # For normal account, two "account-more-actions" - # One for the account, one for the credit card. Take the good one - if "mouvements.phtml" in a.attrib['href'] and "/cartes/" not in a.attrib['href']: - account._link_id = a.attrib['href'] + elif td.attrib.get('class', '') == 'account-more-actions': + for a in td.getiterator('a'): + # For normal account, two "account-more-actions" + # One for the account, one for the credit card. Take the good one + if "mouvements.phtml" in a.attrib['href'] and "/cartes/" not in a.attrib['href']: + account._link_id = a.attrib['href'] - elif td.attrib.get('class', '') == 'account-number': - id = td.text - id = id.strip(u' \n\t') - account.id = id + elif td.attrib.get('class', '') == 'account-number': + id = td.text + id = id.strip(u' \n\t') + account.id = id - elif td.attrib.get('class', '') == 'account-total': - span = td.find('span') - if span is None: - balance = td.text - else: - balance = span.text - account.currency = account.get_currency(balance) - balance = FrenchTransaction.clean_amount(balance) - if balance != "": - account.balance = Decimal(balance) - else: - account.balance = Decimal(0) + elif td.attrib.get('class', '') == 'account-total': + span = td.find('span') + if span is None: + balance = td.text + else: + balance = span.text + account.currency = account.get_currency(balance) + balance = FrenchTransaction.clean_amount(balance) + if balance != "": + account.balance = Decimal(balance) + else: + account.balance = Decimal(0) - else: - # because of some weird useless - if account.id is not None: - yield account + else: + # because of some weird useless + if account.id is not None: + yield account