handelsregister

command line interface for handelsregister.de
git clone https://git.ce9e.org/handelsregister.git

commit
2874541b74be30ed5d2a320bebad12d30053ccb3
parent
a163382b134b4f6596d83d76318a1706c6630bb0
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-12-07 14:57
automatically retry on ConnectionError

very common issue

Diffstat

M handelsregister.py 19 +++++++++++++++++--

1 files changed, 17 insertions, 2 deletions


diff --git a/handelsregister.py b/handelsregister.py

@@ -1,5 +1,6 @@
    1     1 import argparse
    2     2 import re
   -1     3 import time
    3     4 
    4     5 import requests
    5     6 from bs4 import BeautifulSoup
@@ -27,6 +28,20 @@ def parse_id(s):
   27    28     raise ValueError(s)
   28    29 
   29    30 
   -1    31 class Session(requests.Session):
   -1    32     def request(self, *args, **kwargs):
   -1    33         retries = 2
   -1    34         while True:
   -1    35             try:
   -1    36                 return super().request(*args, **kwargs)
   -1    37             except requests.exceptions.ConnectionError:
   -1    38                 if retries > 0:
   -1    39                     retries -= 1
   -1    40                     time.sleep(1)
   -1    41                 else:
   -1    42                     raise
   -1    43 
   -1    44 
   30    45 def fetch_view_state(session):
   31    46     r = session.get('https://www.handelsregister.de/rp_web/erweitertesuche/welcome.xhtml')
   32    47     r.raise_for_status()
@@ -52,7 +67,7 @@ def _search(session, data):
   52    67 
   53    68 
   54    69 def search(terms, register=''):
   55    -1     with requests.Session() as session:
   -1    70     with Session() as session:
   56    71         soup = _search(session, {
   57    72             'form:schlagwoerter': terms,
   58    73             'form:aenlichLautendeSchlagwoerterBoolChkbox_input': 'on',
@@ -67,7 +82,7 @@ def search(terms, register=''):
   67    82 
   68    83 
   69    84 def get_xml(register, id):
   70    -1     with requests.Session() as session:
   -1    85     with Session() as session:
   71    86         soup = _search(session, {
   72    87             'form:registerNummer': id,
   73    88             'form:registerArt_input': register,