Wie man XML in Python parst

Bemerkungen: 0

XML (eXtensible Markup Language) ist eine vielseitige Auszeichnungssprache, die häufig zur Kodierung von Dokumenten in einem Format verwendet wird, das sowohl für Menschen als auch für Maschinen lesbar ist. Dieses Format wird in großem Umfang für die Übertragung von Daten, die Erstellung von Konfigurationsdateien und die Entwicklung von Webdiensten verwendet.

In XML-Dokumenten sind die Elemente in Tags gekapselt, die den Anfang und das Ende jedes Elements kennzeichnen und eine klare Struktur für die Daten bieten.

Beispiel für XML:

<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
      </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>

Dieser Artikel befasst sich mit verschiedenen Bibliotheken und Methoden, die für das Parsen von XML in Python zur Verfügung stehen.

Python-Bibliotheken für XML-Parsing

Im Folgenden werden wir uns mit den verschiedenen Bibliotheken beschäftigen, die für die XML-Datenextraktion in Python zur Verfügung stehen, und Sie durch den Installationsprozess führen, um Ihre Umgebung für die Arbeit mit XML-Dokumenten einzurichten.

xml.etree.ElementTree

xml.etree.ElementTree ist ein Standard-Bibliotheksmodul zum Parsen und Erstellen von XML-Daten. Es bietet ein effizientes und einfaches API zum Parsen von XML aus Strings und Dateien und zum Erstellen von XML-Dokumenten.

Basisches Beispiel:


import xml.etree.ElementTree as ET

xml_data = """
<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
    </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>
"""

root = ET.fromstring(xml_data)

for item in root.findall('item'):
    name = item.find('name').text
    price = item.find('price').text
    print(f'Name: {name}, Price: {price}')

Ausgabe:

1.png

xml.dom.minidom

xml.dom.minidom ist eine weitere integrierte Python-Bibliothek, die eine DOM-Darstellung (Document Object Model) von XML bietet. Diese Bibliothek ermöglicht eine detailliertere XML-Manipulation.

Basisches Beispiel:

from xml.dom.minidom import parseString

xml_data = """
<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
    </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>
"""

dom = parseString(xml_data)
items = dom.getElementsByTagName('item')

for item in items:
    name = item.getElementsByTagName('name')[0].firstChild.data
    price = item.getElementsByTagName('price')[0].firstChild.data
    print(f'Name: {name}, Price: {price}')

Ausgabe:

2.png

BeautifulSoup XML-Parsing

BeautifulSoup ist eine beliebte Bibliothek zum Parsen von HTML- und XML-Dokumenten. Sie ist besonders nützlich für das Scraping von Webdaten und den Umgang mit schlecht geformtem XML.

Basisches Beispiel:


from bs4 import BeautifulSoup

xml_data = """
<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
    </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>
"""

soup = BeautifulSoup(xml_data, 'xml')
items = soup.find_all('item')

for item in items:
    name = item.find('name').text
    price = item.find('price').text
    print(f'Name: {name}, Price: {price}')

Output:

3.png

lxml library

lxml ist eine leistungsstarke Bibliothek, die die Benutzerfreundlichkeit von ElementTree mit der Geschwindigkeit und den Funktionen der libxml2-Bibliothek kombiniert. Sie unterstützt sowohl XML- als auch HTML-Parsing.

Basisches Beispiel:

from lxml import etree

xml_data = """
<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
    </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>
"""

root = etree.fromstring(xml_data)
items = root.findall('item')

for item in items:
    name = item.find('name').text
    price = item.find('price').text
    print(f'Name: {name}, Price: {price}')

Ausgabe:

4.png

XML-Konvertierung in Wörterbücher

Die Umwandlung von XML in ein Wörterbuch kann nützlich sein, um XML-Daten flexibler zu bearbeiten und zu verarbeiten.


import xml.etree.ElementTree as ET

def xml_to_dict(element):
    if len(element) == 0:
        return element.text
    return {child.tag: xml_to_dict(child) for child in element}

xml_data = """
<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
    </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>
"""

root = ET.fromstring(xml_data)
data_dict = xml_to_dict(root)
print(data_dict)

Ausgabe:

5.png

XML zu CSV Konvertierung

Die Konvertierung von Daten aus dem XML- in das CSV-Format vereinfacht den Prozess der Analyse und Speicherung von Daten, erleichtert die Integration in Tabellenkalkulationsanwendungen und verbessert die Fähigkeit, Daten effektiv zu visualisieren.

import csv
import xml.etree.ElementTree as ET

xml_data = """
<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
    </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>
"""

root = ET.fromstring(xml_data)

with open('output.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['Name', 'Price'])
    
    for item in root.findall('item'):
        name = item.find('name').text
        price = item.find('price').text
        writer.writerow([name, price])

Behandlung von XML-Fehlern

Beim Parsen von XML ist die Behandlung von Fehlern von entscheidender Bedeutung, um sicherzustellen, dass Ihr Code unerwartete oder schlecht geformte Daten korrekt verarbeiten kann.

import xml.etree.ElementTree as ET

xml_data = """
<data>
    <item>
        <name>Item 1</name>
        <price>10</price>
    </item>
    <item>
        <name>Item 2</name>
        <price>20</price>
    </item>
</data>
"""

try:
    root = ET.fromstring(xml_data)
except ET.ParseError as e:
    print(f'Error parsing XML: {e}')

Parsing von XML aus einer URL

Hier ist ein praktisches Beispiel für die Verwendung von BeautifulSoup zum Parsen von XML-Daten aus einer URL:

import requests  # Importieren der Request-Bibliothek, um HTTP-Anfragen zu stellen
from bs4 import BeautifulSoup  # Importieren von BeautifulSoup aus der bs4-Bibliothek zum Parsen von XML

# Definieren Sie die URL der XML-Daten
url = "https://httpbin.org/xml"

# Senden Sie eine GET-Anfrage an die URL
response = requests.get(url)

# Parsen des XML-Inhalts der Antwort mit BeautifulSoup
soup = BeautifulSoup(response.content, 'xml')

# Schleife durch alle 'slide'-Elemente in der XML-Datei
for slide in soup.find_all('slide'):
    # Suchen Sie das Element "Titel" innerhalb jeder "Folie" und ermitteln Sie dessen Text
    title = slide.find('title').text
    # Drucken des Titeltextes
    print(f'Title: {title}')

Ausgabe:

6 (1).png

Zahlreiche Anwendungen nutzen das elementare Datenformat XML, von Webdiensten bis hin zu Konfigurationsdateien. Python verfügt über zahlreiche robuste Bibliotheken für das Parsen und die Manipulation von XML-Daten. Python verfügt über eine umfassende Bibliothek für das Parsen von XML-Daten, unabhängig davon, ob es sich um ein einfaches Data Mining oder eine aufwendige Dokumentenverarbeitung handelt. Ein Muss für Python-Webentwickler ist die Fähigkeit, XML sowohl für den Datenaustausch als auch für Web Scraping zu programmieren.

Bemerkungen:

0 Bemerkungen