lxml kombiniert die Geschwindigkeit dieser Bibliotheken mit der Einfachheit der Sprache Python.
Kompatibel mit allen Versionen CPython 2,4-3,2
Was ist neu in dieser Pressemitteilung:.
- lxml.html.iterlinks jetzt zurück Links innerhalb Meta-Refresh-Tags.
- New XMLParser Option collect_ids = False, um ID-Hash-Tabelle-Erstellung deaktivieren. Dies kann wesentlich beschleunigen Parsen von Dokumenten mit vielen verschiedenen IDs, die nicht verwendet werden.
- Der Parser verwendet per-Dokument Hash-Tabellen für die XML-IDs. Dies reduziert die Belastung des globalen Parser dict und beschleunigt Parsen für Dokumente mit vielen verschiedenen IDs.
- ElementTree.getelementpath (Element) liefert eine strukturelle ElementPath Ausdruck für das betreffende Element, das für Lookups später verwendet werden kann.
- xmlfile () akzeptiert ein neues Argument in der Nähe = True, um Datei zu schließen (-artigen) Objekte nach dem Schreiben auf sie. Vorher xmlfile () nur dann geschlossen die Datei, wenn sie intern geöffnet hatte.
- Lassen Sie & quot; bytearray & quot; Typ für ASCII-Texteingabe.
Was ist neu in Version 3.4.2:
- lxml.html.iterlinks Links in meta kehrt jetzt Tags zu aktualisieren.
- New XMLParser Option collect_ids = False, um ID-Hash-Tabelle-Erstellung deaktivieren. Dies kann wesentlich beschleunigen Parsen von Dokumenten mit vielen verschiedenen IDs, die nicht verwendet werden.
- Der Parser verwendet per-Dokument Hash-Tabellen für die XML-IDs. Dies reduziert die Belastung des globalen Parser dict und beschleunigt Parsen für Dokumente mit vielen verschiedenen IDs.
- ElementTree.getelementpath (Element) liefert eine strukturelle ElementPath Ausdruck für das betreffende Element, das für Lookups später verwendet werden kann.
- xmlfile () akzeptiert ein neues Argument in der Nähe = True, um Datei zu schließen (-artigen) Objekte nach dem Schreiben auf sie. Vorher xmlfile () nur dann geschlossen die Datei, wenn sie intern geöffnet hatte.
- Lassen Sie & quot; bytearray & quot; Typ für ASCII-Texteingabe.
Was ist neu in Version 3.3.2:
- Die Eigenschaften Resolver und Version, sowie die Methoden set_element_class_lookup () und makeelement (), wurden aus iterparse Objekte verloren.
- Instanzen XMLSchema, Schematron und RelaxNG nicht ihren lokalen error_log, bevor Sie eine Validierung zu löschen.
- lxml.doctestcompare gemischt up & quot; erwartet, & quot; und & quot; tatsächliche & quot; in Attributwerte.
Was ist neu in Version 3.3.1:
- Fehler behoben:
- HTML-Dokumente mit parser.feed analysiert () konnte Elemente während tag Iteration zu finden.
- Gebäude in PyPy gescheitert wegen fehlender Unterstützung für PyUnicode_Compare () und PyByteArray _ * () in PyPy C-API.
- Compilation in MSVC scheiterte an fehlenden & quot; stdint.h & quot; Standard-Header-Datei.
- iterparse () nicht zu analysieren BOM voran Dateien.
Was ist neu in Version 3.3.0:
- Fehler behoben:
- Die Heuristik, die Dateipfade unterscheidet von URLs wurde angezogen, um weniger falsch negative Ergebnisse zu produzieren.
Was ist neu in Version 3.2.3:
- Feste Unterstützung für Python 2.4, die in 3.2 verloren .2.
Was ist neu in Version 3.2.1:
- Die Methoden apply_templates () und process_children () von XSLT-Erweiterungselemente sind zwei neue Optionen boolean elements_only und remove_blank_text daß gewonnen verwerfen entweder alle Strings oder whitespace-only-Strings aus der Ergebnisliste.
Was ist neu in Version 3.2.0:
- Führende Leerzeichen könnte das Verhalten des Zeichenfolgenanalyse ändern Funktionen in lxml.html.
- Der String Parsen Funktionen in lxml.html robuster sind angesichts der ungewöhnlich HTML-Inhalt wie Framesets oder fehlender Body-Tags.
- E / A-Fehler beim Versuch, Dateien mit Pfaden, die Nicht-ASCII-Zeichen enthalten könnte UnicodeDecodeError erhöhen zugreifen, anstatt richtig die Berichterstattung über die IOError.
- Das Parsen von In-Memory-Strings deaktiviert Netzzugang in der Standard-Parser und machte weitere Versuche, von einer URL zu analysieren scheitern.
Was ist neu in Version 3.1.2:
- Passing-Attribute durch den Namespace-API nicht bewusst von der sax Brücke (dh der handler.startElement () -Methode) ist fehlgeschlagen mit einer Typeerror.
- Feste Serialisierung Fehler in XSLT-Ausgabe bei der Konvertierung der Ergebnisbaum auf einen Unicode-String.
Was ist neu in Version 3.0.2:
- Absturz während der Dolmetscher Abschaltung durch die Umstellung auf Cython 0,17 0,3 für den Bau.
Was ist neu in der Version 3.0:
- C14N können unter Angabe der inclusive Präfixe gefördert zu werden top- Pegel während exklusive Serialisierung.
- Die erste Unterstützung für den Aufbau in PyPy (durch cpyext).
- DTD Objekte gewonnen eine API, die Lesezugriff auf ihre Erklärungen ermöglicht.
- xpathgrep.py gewann Unterstützung für das Parsen line-by-line (zB von grep-Ausgang) und rund um die Ausgabe mit einem neuen Root-Tag.
- E-Werk in lxml.builder nimmt Subtypen der bekannten Datentypen (wie String-Subtypen) beim Bau von Elementen um sie herum.
- Baum Iteration und iterparse () mit einem selektiven tag Argument unterstützt Passieren einer Reihe von Tags. Baumknoten werden von den Iteratoren zurück, wenn sie einen der Tags übereinstimmt.
Was ist neu in Version 2.3.5:
- Absturz beim Zusammenführen von Textknoten in element.remove ( ).
- Absturz in sax / Ziel-Parser bei der Berichterstattung leer doctype.
Was ist neu in Version 2.3.4:
- Absturz beim Aufbau eines nsmap (Element-Eigenschaft) mit leere Namespace URIs.
- Absturz auf Grund der Rasse erhalten, wenn Fehler (oder Benutzernachrichten) treten während der Gewinde XSLT-Verarbeitung.
- XSLT-Stylesheet Zusammenstellung könnte Kompilierungsfehler zu ignorieren.
Was ist neu in Version 2.3.3:
- Eigenschaften hinzugefügt:
- lxml.html.tostring () gewann neue Serialisierungsoptionen with_tail und doctype.
- Fehler behoben:
- Ein Absturz bei Verwendung iterparse () für die HTML-Analyse und die Anforderung Startereignisse.
- Feste Parsen von mehr Selektoren in cssselect. Whitespace vor Pseudo-Elemente und Pseudo-Klassen ist signifikant, da es ein Nachkomme combinator. & Quot; E: pseudo & quot; pseudo & quot ;, nicht & quot; E:: E *, sollten die gleiche wie & quot zu analysieren. pseudo & quot;
- lxml.html.diff keinen Anlass mehr eine Ausnahme beim Auftreffen auf 'img' Tags ohne 'src' Attribut.
Was ist neu in Version 2.3.2:
- Eigenschaften hinzugefügt:
- lxml.objectify.deannotate () hat eine neue boolean Option cleanup_namespaces die objektivieren Namespace-Deklarationen zu entfernen (und in der Regel bereinigen, die Namespace-Deklarationen) nach dem Entfernen der Typanmerkungen.
- lxml.objectify seine eigene Unterelement () -Funktion als Kopie etree.SubElement um eine ansonsten redundante Import von lxml.etree auf der Benutzerseite zu vermeiden gewonnen.
- Fehler behoben:
- Der Fehler, der & quot; Nachkomme & quot; Fehler in cssselect ein zweites Mal (nach einer ersten fix in lxml 2.3.1). Die vorherige Änderung führte zu einer ernsthaften Leistungs Regression für die XPath basierte Auswertung des übersetzten Ausdruck. Beachten Sie, dass diese bricht die Nutzung einiger der erzeugten XPath-Ausdrücke wie XSLT Standortpfade, die zuvor in 2.3.1 funktioniert.
- Feste Parsen von einigen Selektoren in cssselect. Whitespace nach Kombinatoren & quot; & # x3e; & rdquo ;, & quot; + & quot; und & quot; ~ & quot; wird nun korrekt ignoriert. Bisher ist als ein Nachkomme combinator analysiert. Zum Beispiel, & quot; div & # x3e; .foo & quot; div & # x3e;; * & quot .foo war das gleiche wie & quot analysiert; anstelle von & quot; div & # x3e; .foo & quot;.
Was ist neu in Version 2.3.1:
- Eigenschaften hinzugefügt:
- Neue Option kill_tags in lxml.html.clean auf bestimmte Tags und deren Inhalt (dh die gesamte Unterbaum) zu entfernen.
- pi.get () und pi.attrib auf Verarbeitungsanweisungen, um Pseudo-Attribute aus dem Textinhalt Verarbeitungshinweise zu analysieren.
- lxml.get_include () gibt eine Liste der Include Pfade, die verwendet werden können, um externe C-Code gegen lxml.etree kompilieren. Dies ist speziell für statisch gelinkte lxml erforderlich baut, wenn Code muss gegen die exakt gleichen Header-Datei-Versionen als lxml selbst kompilieren.
- Resolver.resolve_file () nimmt eine zusätzliche Option close_file, die, wenn die Datei (-artigen) Objekt wird nach dem Lesen oder nicht geschlossen werden konfiguriert. Standardmäßig wird die Datei geschlossen werden, da der Benutzer nicht erwartet, dass ein Verweis auf sie zu halten.
- Fehler behoben:
- HTML Reinigung nicht entfernen 'Daten:'. Links
- Die nutzt html5lib Parser Integration nun die "offizielle" Einführung in html5lib selbst, die sie mit neueren Versionen der Bibliothek zu arbeiten macht.
- In lxml.sax könnte endElementNS () falsch abzulehnen einen einfachen Tag-Namen, wenn das entsprechende Startereignis abgeleitet die gleiche Ebene Tag-Namen in der Standard-Namespace sein.
- Wenn eine geöffnete Datei artigen Gegenstand in parse () übergeben oder iterparse (), wird der Parser nicht mehr schließen es nach dem Gebrauch. Dieser kehrt eine Änderung lxml 2.3, in dem alle Dateien geschlossen würden. Es ist die Verantwortung des Benutzers, um im Fehlerfall richtig schließen Sie die Datei (-artigen) Objekt, auch.
- Assertion-Fehler in lxml.html.cleaner wenn Verwerfen Top-Level-Elemente.
- In lxml.cssselect, verwenden Sie den XPath "A // B '(kurz für' A / descendant-or-self :: node () / B ') anstelle von" A / descendant :: B' für die css Nachkommen-Selektor ('A B'). Dies macht ein paar Grenzfälle im Einklang mit dem Wahlverhalten in WebKit und Firefox, um sein und macht mehr css Ausdrücke gültig Standortpfade (für den Einsatz in xsl: template match).
- In lxml.html, nicht ausgewählten & # X3C; Option & # x3e; Tags nicht mehr angezeigt, in den gesammelten Formularwerte.
- Hinzufügen / Entfernen von & # X3C; Option & # x3e; Werte von / zu einem Mehrfach-Auswahl Formularfeld richtig wählt sie und hebt die Auswahl zu.
- Weitere Änderungen:
- Static baut die Download-Verzeichnis mit dem --download-dir Option angeben.
Was ist neu in Version 2.3:
- Eigenschaften hinzugefügt:
- Bei der Suche nach Kindern, nimmt lxml.objectify '{} tag' so zu verstehen, einen leeren Namensraum, im Gegensatz zu der übergeordneten Namespace.
- Fehler behoben:
- Beim Lesen aus einer Datei förmigen Objekts beendet, ruft der Parser sofort seine .close () -Methode.
- Wenn Sie fertig Parsing, iterparse () schließt sofort die Eingabedatei.
- Work-around für libxml2 Fehler, der HTML-Parser in einem nicht funktionsfähigen Zustand nach dem Parsen eine severly gebrochen Dokument (in libxml2 2.7.8 fest) verlassen.
- Marque-Tag in HTML Bereinigungscode korrekt benannt Zelt.
- Weitere Änderungen:
- Einige öffentliche Funktionen im Cython-level C-API haben expliziter Rückgabetypen.
Was ist neu in der Version 2.3beta1:
- Fehler behoben:
- Absturz in neueren Versionen libxml2 beim Bewegen Elemente zwischen Dokumenten, die Attribute ersetzt XInclude Knoten hatte.
- XMLID () -Funktion wurde die optional Parser und base_url Parameter fehlt.
- Die Suche nach Wildcard-Tags in iterparse () wurde in py3 gebrochen.
- lxml.html.open_in_browser () nicht in Python 3 aufgrund der Verwendung von os.tempnam arbeiten. Es braucht jetzt einen optionalen Parameter 'encoding'.
Kommentare nicht gefunden