html in text umwandeln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Hallo, gibt es in Python irgend etwas, was html Dateien oder Webseiten in normale Text Seiten umwandelt?
__deets__
User
Beiträge: 14544
Registriert: Mittwoch 14. Oktober 2015, 14:29

egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Ich habe jetzt auch das Modul "html2text" gefunden, da steht in einfacher Verwendung

Code: Alles auswählen

html2text [(filename|url) [encoding]]
wie ist das zu verstehen?
Laut des how to kann ich eine URL damit encoden, das wäre ja gut.
__deets__
User
Beiträge: 14544
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist ein Kommandozeilentool. Das musst du eben mit den gegebenen Argumenten aufrufen. Oder per pipe Daten da rein tun (darum ist der Dateiname wohl optional). Dazu benutzt du das subprocess-Modul. Ich wuerde ja das html2markdown bevorzugen, das funktioniert in purem Code.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@egon11: Das sieht nicht nach Python aus sondern nach einem Programm. Eckige Klammern bedeuten üblicherweise „optional“ und „|“ beschreibt üblicherweise Alternativen. Man kann das also ohne Argumente aufrufen, oder mit einem Dateinamen, oder mit einer URL, oder mit einem Dateinamen und einer Kodierung, oder mit einer URL und einer Kodierung.

Wobei das ja auch als Modul nutzbar ist. Schau halt in die Dokumentation. Und es produziert ebenfalls Markdown als Ausgabe, also was ist daran anders/besser als bei dem von `__deets__` vorgeschlagenen `html2markdown`?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Ich habe jetzt mal das Modul getestet, bringt leider noch keinen Erfolg:

Code: Alles auswählen

import urllib.request
from bs4 import BeautifulSoup
import html2markdown
url = "https://www.wetter.com/?gclid=EAIaIQobChMI3uKmy9mq4wIVhcx3Ch28bA30EAAYASAAEgKnhPD_BwE"
urlget = urllib.request.urlopen(url)


for i in urlget:
    x = html2markdown.convert(i)
    print(x)
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@egon11: Das macht ja auch gar keinen Sinn. Was denkst Du denn was `i` ist? Benenne das mal ordentlich. Richtige Namen sind keine Kosmetik sondern wichtiger Bestandteil beim schreiben von korrekten Programmen. Denn dann muss man darüber nachdenken was man macht und merkt hoffentlich wenn das Unsinn ist.

Der `bs4`-Import wird übrigens nicht verwendet.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@egon11: was bedeutet denn "bringt keinen Erfolg"?
Was ist `urlget` für ein Objekt? Was bedeutet es wenn man über es iteriert?
`urlget`, `i` und `x` sind allesamt schlechte Variablennamen. Wenn Du ihnen sinnvolle Namen gegeben hättest, hättest Du überlegen müssen, was für Objekte das sind und wärst wahrscheinlich schon einen Schritt weiter.
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

Die Variablen Namen denke ich sind ja erstmal egal, solange es nicht um Python eigene Namen geht (z.B. line).
Später werde ich es auch ändern.
Warum ist das alles Quatsch?
Jetzt Frage ich mal anders, wie kann ich das Modul einsetzen, was direkt von einer Webseite einen leserlichen text ausgibt?
Ich möchte nix fertiges, aber mal einen Hinweis, denn auf der Seite steht auch nichts verwertbares für mich.
__deets__
User
Beiträge: 14544
Registriert: Mittwoch 14. Oktober 2015, 14:29

Code: Alles auswählen

CONTENT = "Lauter tolle HTML tags"
for i in CONTENT:
      print(i)
Das ist uebertragen was du getan hast. Erkennst du warum das Unfug ist?
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

egon11 hat geschrieben: Dienstag 9. Juli 2019, 17:57 Hallo, gibt es in Python irgend etwas, was html Dateien oder Webseiten in normale Text Seiten umwandelt?
Nein, etwas Generisches, das konstant gut Ergebnisse liefert, gibt es nach meinem Kenntnisstand nicht. Moderne Webseiten können sehr komplex und divers sein und die Anforderungen, daran, was man von der jeweiligen Seite haben möchte, gehen zu sehr auseinander. Siehe auch hier: https://ws-dl.blogspot.com/2017/03/2017 ... plate.html
Für einzelne, konkrete Fälle kann man aber Bibliotheken finden, die gut, oder gut genug funktionieren. Das musst du selbst ausprobieren.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@egon11: Lies bitte noch mal was ich zu Namen geschrieben habe. Die sind *nicht* egal. Wirklich nicht. So gar nicht. Insbesondere nicht in diesem Fall. `line` ist übrigens kein „Python eigene(r) Name“, aber einer der in Deinem Code Sinn Verwendung finden könnte. Und wenn Du ihn dort für den richtigen Wert verwendest, wäre Dir wahrscheinlich aufgefallen was Du falsch machst. Genau *deswegen* sind Namen wichtig. Sie zeigen ob man verstanden hat was für Werte man hat und was man mit diesen Werten dann macht, und ob das überhaupt Sinn macht das so zu machen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
egon11
User
Beiträge: 354
Registriert: Mittwoch 14. Dezember 2016, 20:59

OK ich habe es verstanden. Vielen dank.
Antworten