Sitemap XML Generator
Generate sitemap.xml files with URLs, priorities, and change frequencies.
Frequently Asked Questions
Code Implementation
from datetime import date
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom import minidom
def generate_sitemap(urls: list[dict]) -> str:
"""
Generate sitemap.xml string.
Each url dict: { loc, lastmod?, changefreq?, priority? }
"""
root = Element("urlset")
root.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
for entry in urls:
url_el = SubElement(root, "url")
SubElement(url_el, "loc").text = entry["loc"]
if "lastmod" in entry:
SubElement(url_el, "lastmod").text = entry["lastmod"]
if "changefreq" in entry:
SubElement(url_el, "changefreq").text = entry["changefreq"]
if "priority" in entry:
SubElement(url_el, "priority").text = str(entry["priority"])
raw = tostring(root, encoding="unicode")
dom = minidom.parseString(raw)
return dom.toprettyxml(indent=" ")
urls = [
{"loc": "https://example.com/", "lastmod": str(date.today()), "changefreq": "daily", "priority": 1.0},
{"loc": "https://example.com/about", "lastmod": str(date.today()), "changefreq": "monthly", "priority": 0.8},
{"loc": "https://example.com/contact", "lastmod": str(date.today()), "changefreq": "monthly", "priority": 0.5},
]
print(generate_sitemap(urls))
Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.