Seite 1 von 1

Definitionsliste umgeben von Text scrapen

Verfasst: Sonntag 16. April 2023, 18:04
von Furbynat0r
Hallo zusammen,

ich möchte gerne den Inhalt einer Seite scrapen und das entsprechend formatiert in ein Word Dokument kopieren. Das funktioniert soweit auch ganz gut, nur bei Definitionslisten hänge ich aktuell.

Bild

Ziel soll sein, das diese Struktur auch im Word Dokument so zu finden ist.

Problem ist, wenn ich den Text extrahiere, dann sind die Definistionslisten als "nomaler" Text im Word Dokument, wenn ich die Listen extrahiere, bekomme ich Sie nur am Ende des Paragraph eingesetzt, aber nicht in der richtigen Reihenfolge.

Hoffe, es kann mir jemand den richtigen Denkanstoß geben, der Code sieht aktuell so aus:

Code: Alles auswählen

paragraphs = element.find_all("div", {"class": "jurAbsatz"})
            for p in paragraphs:
                document.add_paragraph(p.text)
            definition_lists = p.find_all('dl')
            for definition_list in definition_lists:
                # Hinzufügen der Definition-Liste
                document.add_paragraph('')
                # Extrahieren und Formatieren der Definitionen der Definition-Liste
                definitions = definition_list.find_all('dd')
                for i, definition in enumerate(definitions, 1):
                    document.add_paragraph(f"{definition.text}", style='List Number')




# Speichern des Word-Dokuments
document.save('output.docx')

Re: Definitionsliste umgeben von Text scrapen

Verfasst: Sonntag 16. April 2023, 19:09
von Sirius3
find_all ist halt der falsche Ansatz. Du mußt die Elemente schon in der richtigen Reihenfolge durchgehen.

Re: Definitionsliste umgeben von Text scrapen

Verfasst: Montag 17. April 2023, 07:53
von Furbynat0r
Danke soweit.

Wenn ich den Text extrahiere, extrahiert er mir ja auch den Inhalt der Liste als Text, sodass ich die die Liste einmal als Fliestext habe und zusätzlich als Definitionsliste.

Wie kann ich dem dem Script sagen, das er nach dem ersten Absatz aufhören soll, dann kommt die DL und dann wieder Text?

Also:

(1) Die Landesregierungen können durch Rechtsverordnung bestimmen, dass und in welchem Umfang das Vereinsregister in maschineller Form als automatisierte Datei geführt wird. Hierbei muss gewährleistet sein, dass

DL

Die Landesregierungen können durch Rechtsverordnung die Ermächtigung nach Satz 1 auf die Landesjustizverwaltungen übertragen.
(2) Das maschinell geführte Vereinsregister tritt für eine Seite des Registers an die Stelle des bisherigen Registers, sobald die Eintragungen dieser Seite in den für die Vereinsregistereintragungen bestimmten Datenspeicher aufgenommen und als Vereinsregister freigegeben worden sind. Die entsprechenden Seiten des bisherigen Vereinsregisters sind mit einem Schließungsvermerk zu versehen.
(3) Eine Eintragung wird wirksam, sobald sie in den für die Registereintragungen bestimmten Datenspeicher aufgenommen ist und auf Dauer inhaltlich unverändert in lesbarer Form wiedergegeben werden kann. Durch eine Bestätigungsanzeige oder in anderer geeigneter Weise ist zu überprüfen, ob diese Voraussetzungen eingetreten sind. Jede Eintragung soll den Tag angeben, an dem sie wirksam geworden ist.

Re: Definitionsliste umgeben von Text scrapen

Verfasst: Montag 17. April 2023, 08:47
von __blackjack__
@Furbynat0r: Du darfst nicht einfach so den gesamten Text extrahieren. Und auch nicht nach bestimmten Elementen suchen und die nach dem anderen Text verarbeiten. Du musst die Elemente der Reihe verarbeiten, so wie sie im HTML stehen, egal was da kommt, und entsprechend unterschiedlich reagieren.

Re: Definitionsliste umgeben von Text scrapen

Verfasst: Mittwoch 26. April 2023, 19:42
von Furbynat0r
Danke zusammen, bin schon einen guten Schritt weiter gekommen. Jetzt habe ich aber das Problem, das wenn in der Definitionsliste nochmal eine Definitionsliste enthalten ist, wird dieser wieder nur als Text gescraped.

Daher habe ich mir überlegt, das Script so umzubauen, dass das Script Element für Element durchgeht und prüft, ob es sich um einen H1, H2 oder H3-Tag, ein Text, Liste oder sonst was ist.

Wie kann ich eine Seite Element für Element durchlaufen?

Danke für die Infos.