handelsregister

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

commit
9c3fee484dad0c2d14ed0aa6f6ed0eb1eecec514
parent
878ca10c1a808b69a4247073a4b4419f1b51e38e
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-12-07 21:21
refactor: deduplicate base URL

Diffstat

M handelsregister.py 43 +++++++++++++++++++------------------------

1 files changed, 19 insertions, 24 deletions


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

@@ -70,11 +70,12 @@ def parse_item(item, ctx):
   70    70 
   71    71 
   72    72 class Session(requests.Session):
   73    -1     def request(self, *args, **kwargs):
   -1    73     def request(self, method, path, **kwargs):
   -1    74         url = f'https://www.handelsregister.de{path}'
   74    75         retries = 2
   75    76         while True:
   76    77             try:
   77    -1                 r = super().request(*args, **kwargs)
   -1    78                 r = super().request(method, url, **kwargs)
   78    79                 r.raise_for_status()
   79    80                 return r
   80    81             except requests.exceptions.ConnectionError:
@@ -86,7 +87,7 @@ class Session(requests.Session):
   86    87 
   87    88 
   88    89 def get_context(session):
   89    -1     r = session.get('https://www.handelsregister.de/rp_web/erweitertesuche/welcome.xhtml')
   -1    90     r = session.get('/rp_web/erweitertesuche/welcome.xhtml')
   90    91     soup = BeautifulSoup(r.content, 'html.parser')
   91    92 
   92    93     return {
@@ -111,18 +112,15 @@ def get_context(session):
  111   112 
  112   113 def _search(session, query):
  113   114     ctx = get_context(session)
  114    -1     r = session.post(
  115    -1         'https://www.handelsregister.de/rp_web/erweitertesuche/welcome.xhtml',
  116    -1         data={
  117    -1             'form': 'form',
  118    -1             'form:btnSuche': '',
  119    -1             'javax.faces.ViewState': ctx['view_state'],
  120    -1             'form:schlagwortOptionen': 1,
  121    -1             'form:aenlichLautendeSchlagwoerterBoolChkbox_input': 'on',
  122    -1             'form:ergebnisseProSeite_input': 100,
  123    -1             **query,
  124    -1         },
  125    -1     )
   -1   115     r = session.post('/rp_web/erweitertesuche/welcome.xhtml', data={
   -1   116         'form': 'form',
   -1   117         'form:btnSuche': '',
   -1   118         'javax.faces.ViewState': ctx['view_state'],
   -1   119         'form:schlagwortOptionen': 1,
   -1   120         'form:aenlichLautendeSchlagwoerterBoolChkbox_input': 'on',
   -1   121         'form:ergebnisseProSeite_input': 100,
   -1   122         **query,
   -1   123     })
  126   124     soup = BeautifulSoup(r.content, features='html.parser')
  127   125     return {
  128   126         'action': soup.select_one('[action]')['action'],
@@ -156,15 +154,12 @@ def get_xml(register, id, court):
  156   154         })
  157   155         field = data['items'][0]['si_field']
  158   156 
  159    -1         r = session.post(
  160    -1             f'https://www.handelsregister.de{data["action"]}',
  161    -1             data={
  162    -1                 'ergebnissForm': 'ergebnissForm',
  163    -1                 'javax.faces.ViewState': data['view_state'],
  164    -1                 'property': 'Global.Dokumentart.SI',
  165    -1                 field: field,
  166    -1             },
  167    -1         )
   -1   157         r = session.post(data['action'], data={
   -1   158             'ergebnissForm': 'ergebnissForm',
   -1   159             'javax.faces.ViewState': data['view_state'],
   -1   160             'property': 'Global.Dokumentart.SI',
   -1   161             field: field,
   -1   162         })
  168   163         return r.text
  169   164 
  170   165