XML-Datei/Bestimmten Tag ausgeben

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
perb
User
Beiträge: 1
Registriert: Mittwoch 22. Februar 2023, 13:28

Hallo,
Ich muß aus mehreren XML-Dateien den Inhalt eines bestimmten Tag (loc) auflisten und habe das so gemacht:

import requests
import xml.etree.ElementTree as ET

#list of xml files
xml_files = ["https://www.anita.com/sitemaps/de/sitemap.xml", "https://www.anita.com/sitemaps/ch/sitemap.xml"]

#iterate through list of xml files
for xml_file in xml_files:
xml_content = requests.get(xml_file).text
tree = ET.fromstring(xml_content)
for url in tree.findall('urlset'):
# print content of specific tag
print(url.find('loc').text)


Die Ausgabe ist gar nichts. Weiß jemand woran das liegt? Ein Beispiel für die XML-Datei ist unter https://www.anita.com/sitemaps/de/sitemap.xml.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

ET.fromstring liefert direkt ein XML-Element und keinen Tree; der Variablennamen ist also verwirrend. <urlset> ist das Root-Element, das kann also per findall nicht gefunden werden.
Dann haben die ganzen Tags Namespace-Präfixe, die Du auch angeben mußt.

Code: Alles auswählen

for url in tree.findall("{http://www.sitemaps.org/schemas/sitemap/0.9}url"):
    print(url.findtext("{http://www.sitemaps.org/schemas/sitemap/0.9}loc"))
Antworten