欢迎访问宙启技术站
智能推送

使用Python生成动态SitemapXML文件的示例代码

发布时间:2023-12-11 14:03:18

要生成动态的Sitemap XML文件,我们可以使用Python的xml.etree.ElementTree模块来创建XML元素和树,然后使用xml.etree.ElementTree.ElementTree方法将根元素和树写入文件。下面是一个示例代码,演示了如何生成动态Sitemap XML文件。

首先,我们需要导入必要的模块:

import xml.etree.ElementTree as ET
import datetime

接下来,我们可以创建一个函数,用于生成 <urlset> 元素和其子元素。这里我们使用一个名为 create_sitemap 的函数。该函数接受一个参数 urls,它是一个包含所有URL和相关信息的列表。

def create_sitemap(urls):
    # 创建根元素
    root = ET.Element("urlset")
    
    # 添加XML命名空间
    root.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
    
    # 循环遍历URL列表
    for url in urls:
        # 创建URL元素
        url_elem = ET.SubElement(root, "url")
        
        # 创建子元素和文本
        loc_elem = ET.SubElement(url_elem, "loc")
        loc_elem.text = url["loc"]
        
        lastmod_elem = ET.SubElement(url_elem, "lastmod")
        lastmod_elem.text = url["lastmod"]
        
        changefreq_elem = ET.SubElement(url_elem, "changefreq")
        changefreq_elem.text = url["changefreq"]
        
        priority_elem = ET.SubElement(url_elem, "priority")
        priority_elem.text = url["priority"]
    
    # 创建ElementTree
    tree = ET.ElementTree(root)
    
    # 返回ElementTree
    return tree

现在我们可以使用 create_sitemap 函数来生成Sitemap XML文件。我们需要提供一个URL列表,每个URL都包含以下信息:URL的位置(loc),上次修改时间(lastmod),变更频率(changefreq)和优先级(priority)。

# 创建一个URL列表
urls = [
    {
        "loc": "https://www.example.com/page1",
        "lastmod": datetime.datetime.now().isoformat(),
        "changefreq": "monthly",
        "priority": "0.8"
    },
    {
        "loc": "https://www.example.com/page2",
        "lastmod": datetime.datetime.now().isoformat(),
        "changefreq": "weekly",
        "priority": "0.6"
    },
    # 更多URL...
]

# 生成Sitemap XML文件
tree = create_sitemap(urls)
tree.write("sitemap.xml")

在这个示例中,我们创建了一个包含两个URL的URL列表。每个URL都指定了其位置、上次修改时间、变更频率和优先级。然后我们调用 create_sitemap 函数来生成Sitemap XML文件,并将其写入名为 sitemap.xml 的文件中。

运行这个示例后,将会得到一个包含如下内容的sitemap.xml文件:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>https://www.example.com/page1</loc>
        <lastmod>2021-06-10T11:30:00</lastmod>
        <changefreq>monthly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>https://www.example.com/page2</loc>
        <lastmod>2021-06-10T11:30:00</lastmod>
        <changefreq>weekly</changefreq>
        <priority>0.6</priority>
    </url>
</urlset>

这是一个基本的示例,您可以根据需要对其进行扩展和自定义。您可以修改create_sitemap函数以添加其他的URL信息或元素,也可以根据实际需求动态生成URL列表。