HTML in Python navigieren
HTML-Navigation
Der Aspose.Html.Dom Namespace bietet eine API, die beliebige HTML-, XML- oder SVG-Dokumente darstellt und mit ihnen interagiert. Er basiert vollständig auf der WHATWG DOM Spezifikation, die von vielen modernen Browsern unterstützt wird.
In diesem Artikel erfahren Sie, wie Sie mit Aspose.HTML for Python via .NET programmatisch Daten aus HTML-Dokumenten extrahieren können. Sie erfahren es:
- wie man durch ein HTML-Dokument navigiert und seine Elemente mit Hilfe der Python-API detailliert untersucht;
- wie man mit dem CSS-Selektor und der XPath-Abfrage durch das Dokument navigiert.
Die Navigation in HTML beinhaltet den Zugriff auf und die Bearbeitung von Elementen und deren Beziehungen innerhalb eines Dokuments. Aspose.HTML for Python via .NET ermöglicht es Ihnen, in HTML zu navigieren und es zu inspizieren, was die Arbeit mit dem von der Bibliothek bereitgestellten Document Object Model (DOM) beinhaltet. Die folgende Auflistung zeigt den einfachsten Weg, um auf alle DOM-Elemente zuzugreifen:
- Document Object Model (DOM) . Die DOM-Struktur stellt das HTML-Dokument als einen Baum von Knoten dar. Jeder Knoten stellt einen Teil des Dokuments dar, z. B. Elemente, Text oder Kommentare.
- Die Klasse Document repräsentiert das gesamte HTML-, XML- oder SVG-Dokument und dient als Wurzel des Dokumentbaums.
- Die Klasse Element repräsentiert ein Element in einem HTML- oder XML-Dokument.
- Die Klasse Node stellt einen einzelnen Knoten im Dokumentenbaum dar.
- Accessing Elements
- Verwenden Sie Methoden wie
get_elements_by_tag_name(
tagname), um Elemente nach ihrem Tag-Namen abzurufen. - Verwenden Sie die Methode get_element_by_id(), um auf ein bestimmtes Element mit einer eindeutigen ID zuzugreifen.
- Verwenden Sie
get_elements_by_class_name(
class_names), um Elemente nach ihren Klassennamen abzurufen. - Verwenden Sie die Methode
query_selector(
selector) für ein einzelnes Element oder query_selector_all(selector) für eine Liste von Elementen, die einem CSS-Selektor entsprechen.
- Navigieren im DOM-Baum
- Zugriff auf Kinder eines Elements mit den Eigenschaften child_nodes oder children.
- Verwenden Sie die Eigenschaft first_child bzw. last_child, um den ersten bzw. letzten Kindknoten des aktuellen Knotens zurückzugeben, der ein beliebiger Knotentyp sein kann, z. B. ein Element, ein Text oder ein Kommentar.
- Verwenden Sie die Eigenschaft parent_node, um auf das übergeordnete Element eines bestimmten Elements zuzugreifen.
- Zugriff auf Geschwister mit Eigenschaften wie next_sibling oder next_sibling.
- Manipulation von Elementen
- Verwenden Sie Eigenschaften der Klasse Element wie inner_html und text_content, um den Elementinhalt zu ändern.
- Abrufen oder Setzen von Attributen mit Methoden wie
get_attribute(
qualified_name) und set_attribute(qualified_name, value).
Die API-Referenzquelle enthält eine umfassende Liste der Klassen und Methoden im Namensraum “aspose.html.dom”.
Navigieren im DOM-Baum
Wir betrachten, wie das DOM ein HTML-Dokument im Speicher darstellt und wie man die API für die Navigation durch HTML-Dateien verwendet. Vier der Eigenschaften der Klasse
Node – first_child, last_child, next_sibling und next_sibling – liefern jeweils einen Live-Verweis auf ein anderes Element mit der definierten Beziehung zum aktuellen Element, wenn das entsprechende Element existiert.
Mit Hilfe der genannten Eigenschaften können Sie durch ein HTML-Dokument wie folgt navigieren:
1# Navigate the HTML DOM using Python
2
3import aspose.html as ah
4
5# Prepare HTML code
6html_code = "<span>Hello</span> <span>World!</span>"
7
8# Initialize a document from the prepared code
9with ah.HTMLDocument(html_code, ".") as document:
10 # Get the reference to the first child (first SPAN) of the BODY
11 element = document.body.first_child
12 print(element.text_content) # output: Hello,
13
14 # Get the reference to the whitespace between html elements
15 element = element.next_sibling
16 print(element.text_content) # output: " "
17
18 # Get the reference to the second SPAN element
19 element = element.next_sibling
20 print(element.text_content) # output: World!Prüfen von HTML
Aspose.HTML enthält eine Liste von Methoden, die auf den Element Traversal Specifications beruhen. Mit Hilfe der API können Sie eine detaillierte Inspektion des Dokuments und seiner Elemente durchführen. Der folgende Python-Code zeigt, wie man mit Aspose.HTML for Python via .NET in einem HTML-Dokument navigiert und bestimmte Elemente und deren Eigenschaften extrahiert.
1# Navigate and inspect HTML document using Python
2
3import os
4import aspose.html as ah
5
6# Load a document from a file
7data_dir = "data" # Change this to your actual data directory
8document_path = os.path.join(data_dir, "html_file.html")
9with ah.HTMLDocument(document_path) as document:
10 # Get the html element of the document
11 element = document.document_element
12 print(element.tag_name) # HTML
13
14 # Get the last element of the html element
15 element = element.last_element_child
16 print(element.tag_name) # BODY
17
18 # Get the first element of the body element
19 element = element.first_element_child
20 print(element.tag_name) # H1
21 print(element.text_content) # Header 1Der mitgelieferte Python-Code beginnt mit der Angabe des Pfads zur HTML-Datei im Verzeichnis “data”.
- Verwenden Sie
HTMLDocument, um ein Dokument zu laden, und die Eigenschaft document.document_element, um auf das Wurzel-HTML-Element zuzugreifen. Geben Sie den Tag-Namen dieses Elements aus, der “HTML” lautet. - Als Nächstes rufen Sie mit last_element_child das letzte Kind des HTML-Elements ab, nämlich das Element “BODY”, und geben dessen Tag-Namen aus.
- Verwenden Sie anschließend die Eigenschaft first_element_child, um auf das erste Kind des Elements BODY zuzugreifen, das ein “H1”-Element ist, und geben Sie sowohl seinen Tag-Namen als auch seinen Textinhalt aus, der “Header 1” lautet.
XPath-Abfrage
Die Alternative zur HTML-Navigation ist die XPath-Abfrage ( XML Path Language), die oft einfach als XPath bezeichnet wird. Es handelt sich dabei um eine Abfragesprache, die zur Abfrage von Daten aus HTML-Dokumenten verwendet werden kann. Sie basiert auf einer DOM-Darstellung des HTML-Dokuments und wählt Knoten nach verschiedenen Kriterien aus. Die Syntax der XPath-Ausdrücke ist recht einfach, und was noch wichtiger ist, sie ist leicht zu lesen und zu unterstützen.
Das folgende Beispiel zeigt, wie XPath-Abfragen innerhalb der Aspose.HTML Python API verwendet werden können:
1# How to use XPath to select nodes using Python
2
3import aspose.html as ah
4import aspose.html.dom.xpath as hxpath
5
6# Prepare HTML code
7code = """
8 <div class='happy'>
9 <div>
10 <span>Hello,</span>
11 </div>
12 </div>
13 <p class='happy'>
14 <span>World!</span>
15 </p>
16"""
17
18# Initialize a document based on the prepared code
19with ah.HTMLDocument(code, ".") as document:
20 # Here we evaluate the XPath expression where we select all child SPAN elements from elements whose 'class' attribute equals to 'happy'
21 result = document.evaluate("//*[@class='happy']//span",
22 document,
23 None,
24 hxpath.XPathResultType.ANY,
25 None)
26
27 # Iterate over the resulted nodes
28 node = result.iterate_next()
29 while node is not None:
30 print(node.text_content)
31 node = result.iterate_next()
32 # output: Hello,
33 # output: World!Die Methode evaluate() in der Aspose.HTML Python-Bibliothek ermöglicht die Ausführung von XPath-Abfragen auf HTML- oder XML-Dokumente, was eine detaillierte Datenextraktion und Navigation ermöglicht. Sie nimmt einen XPath-Ausdruck als primären Parameter an, der die auszuführende Abfrage angibt, und gibt ein “XPathResult”-Objekt zurück, das auf dem definierten Ergebnistyp basiert.
CSS-Selektor
Zusätzlich zur HTML-Navigation und XPath unterstützt die Aspose.HTML Python API die
CSS Selector API. Mit dieser API können Sie Suchmuster unter Verwendung der
CSS Selectors Syntax formulieren, um Elemente innerhalb eines HTML-Dokuments zu identifizieren und auszuwählen. So kann beispielsweise die Methode
query_selector_all(selector) verwendet werden, um ein HTML-Dokument zu durchsuchen und Elemente abzurufen, die mit einem angegebenen CSS-Selektor übereinstimmen. Diese Methode akzeptiert eine CSS-Selektorzeichenkette als Argument und gibt eine NodeList zurück, die alle Elemente enthält, die den Selektorkriterien entsprechen. Mit CSS-Selektoren können Sie Elemente auf der Grundlage ihrer Attribute, Klassen, IDs und anderer Kriterien effizient finden und bearbeiten, was sie zu einem vielseitigen Werkzeug sowohl für einfache als auch für komplexe Aufgaben beim Parsen von Dokumenten macht. Diese Funktionalität ist besonders nützlich für Aufgaben wie Styling, Datenextraktion und Inhaltsmanipulation innerhalb eines HTML-Dokuments.
1# Extract nodes Using CSS selector using Python
2
3import aspose.html as ah
4
5# Prepare HTML code
6code = """
7 <div class='happy'>
8 <div>
9 <span>Hello,</span>
10 </div>
11 </div>
12 <p class='happy'>
13 <span>World!</span>
14 <p>I use CSS Selector.</p>
15 </p>
16"""
17
18# Initialize a document based on the prepared code
19with ah.HTMLDocument(code, ".") as document:
20 # Create a CSS Selector that extracts all elements whose "class" attribute equals "happy" and their child <span> elements
21 elements = document.query_selector_all(".happy span")
22
23# Iterate over the resulted list of elements
24 for element in elements:
25 print(element.text_content)
26 # output: Hello,
27 # output: World!Schlussfolgerung
Die Aspose.HTML for Python via .NET-Bibliothek bietet eine Reihe von robusten Werkzeugen für die Arbeit mit HTML-, XML- und SVG-Dokumenten, die sich an die von modernen Browsern weithin unterstützte WHATWG DOM-Spezifikation halten. Mit der Klasse HTMLDocument und ihren verschiedenen Navigationseigenschaften und -methoden können Sie effektiv mit HTML-Inhalten interagieren und diese manipulieren. So vermeiden Sie die Komplexität der manuellen Datenextraktion und können sich auf strategischere Aspekte Ihrer Projekte konzentrieren.
Aspose.HTML bietet kostenlose Online- HTML-Webanwendungen, die eine Online-Sammlung von Konvertern, Zusammenschlüssen, SEO-Tools, HTML-Code-Generatoren, URL-Tools, Prüfungen der Barrierefreiheit und mehr sind. Die Anwendungen funktionieren auf allen Betriebssystemen mit einem Webbrowser und erfordern keine zusätzliche Softwareinstallation. Nutzen Sie unsere Sammlung von HTML-Webanwendungen, um Ihre täglichen Aufgaben zu erledigen und Ihre Arbeitsabläufe nahtlos zu gestalten!
