Was ist bei der Verwendung von Beautiful Soup der Unterschied zwischen „lxml“ und „html.parser“ und „html5lib“?
Wann würden Sie eines über dem anderen verwenden und die Vorteile von jedem? Als ich sie benutzte, schienen sie austauschbar zu sein, aber die Leute hier korrigieren mich, dass ich eine andere verwenden sollte. Ich möchte mein Verständnis stärken; Ich habe hier ein paar Beiträge darüber gelesen, aber sie gehen überhaupt nicht viel auf die Verwendung ein.
Beispiel:
soup = BeautifulSoup(response.text, 'lxml')
Von dem Dokumente‘s zusammengefasste Tabelle der Vor- und Nachteile:
-
html.parser – BeautifulSoup(markup, "html.parser")
-
Vorteile: Inklusive Batterien, Ordentliche Geschwindigkeit, Nachsichtig (ab Python 2.7.3 und 3.2.)
-
Nachteile: Nicht sehr nachsichtig (vor Python 2.7.3 oder 3.2.2)
-
lxml – BeautifulSoup(markup, "lxml")
-
html5lib – BeautifulSoup(markup, "html5lib")
-
Vorteile: Extrem nachsichtig, Parst Seiten wie ein Webbrowser, Erstellt gültiges HTML5
-
Nachteile: Sehr langsam, externe Python-Abhängigkeit
Die Hauptunterschiede werden in der BeautifulSoup-Dokumentation hervorgehoben:
Die Grundüberlegung, warum Sie einen Parser anderen vorziehen würden:
html.parser
– eingebaut – keine zusätzlichen Abhängigkeiten erforderlich
html5lib
– der mildeste – Verwenden Sie es besser, wenn HTML defekt ist
lxml
– die schnellste