如何用Python生成sitemap.xml网站地图


最简单可靠的方式是用Python标准库xml.etree.ElementTree手动构造符合Sitemap协议的XML,根节点为urlset,每个url包含必填loc及可选lastmod、changefreq、priority,确保loc为绝对URL、lastmod为ISO 8601格式。

如何用python生成sitemap.xml网站地图

用Python生成 sitemap.xml 最简单可靠的方式是手动构造符合Sitemap协议的XML内容,或借助轻量库(如 xml.etree.ElementTree 或第三方库 django-sitemaps / flask-sitemap)。对大多数静态网站或小型动态站,纯Python + 标准库就足够,无需引入复杂框架。

使用 xml.etree.ElementTree 构建标准 sitemap.xml

Python 标准库中的 xml.etree.ElementTree 足以生成合法、可被搜索引擎识别的 sitemap。关键点:根节点为 urlset,每个 url 包含 loc(必填),可选 lastmodchangefreqpriority

  • 确保 loc 是完整、可访问的绝对 URL(如 https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161blog/post1/
  • lastmod 格式必须为 YYYY-MM-DDYYYY-MM-DDThh:mm:ss+00:00(推荐 ISO 8601)
  • 避免特殊字符未转义——ElementTree 会自动处理,但手动拼接字符串时需用 xml.sax.saxutils.escape()

一个可直接运行的生成脚本示例

以下脚本生成包含 3 个页面的 sitemap.xml,保存到当前目录:

import xml.etree.ElementTree as ET
from datetime import datetime
<h1>创建根元素</h1><p>urlset = ET.Element("urlset", xmlns="<a href="https://www.php.cn/link/654f3a10edb3bb1755a43cc4f9be9dc6">https://www.php.cn/link/654f3a10edb3bb1755a43cc4f9be9dc6</a>")</p><h1>定义页面数据(实际项目中可从数据库、文件列表或 CMS API 获取)</h1><p>pages = [
{"loc": "<a href="https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161">https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161</a>", "lastmod": "2025-05-01", "changefreq": "weekly", "priority": "1.0"},
{"loc": "<a href="https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161about/">https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161about/</a>", "lastmod": "2025-04-22", "changefreq": "monthly", "priority": "0.8"},
{"loc": "<a href="https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161blog/">https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161blog/</a>", "lastmod": "2025-05-10", "changefreq": "daily", "priority": "0.9"},
]</p><p>for page in pages:
url = ET.SubElement(urlset, "url")
ET.SubElement(url, "loc").text = page["loc"]
ET.SubElement(url, "lastmod").text = page["lastmod"]
ET.SubElement(url, "changefreq").text = page["changefreq"]
ET.SubElement(url, "priority").text = page["priority"]</p><h1>写入文件(缩进需手动处理,或用第三方库如 xmltodict / lxml 美化)</h1><p>tree = ET.ElementTree(urlset)
tree.write("sitemap.xml", encoding="utf-8", xml_declaration=True)</p><p>print("✅ sitemap.xml 已生成")

运行后得到结构清晰、合规的 XML 文件,可直接部署到网站根目录。

通达CMS蓝色中英双语企业网站1.4.2 通达CMS蓝色中英双语企业网站1.4.2

通达CMS是采用PHP+MYSQL进行开发的。支持伪静态设置,可生成google和百度地图,支持自定义url、关键字和描述,利于收录...后台简单明了,代码简洁,采用DIV+CSS 利于SEO,企业建站系统是一套专门用于中小企业网站建设的网站管理系统。

通达CMS蓝色中英双语企业网站1.4.2 0 查看详情 通达CMS蓝色中英双语企业网站1.4.2

处理大型网站:分片与索引(sitemap index)

单个 sitemap 最多支持 5 万条 URL,总大小不超过 50MB(压缩后)。超限时需拆分为多个 sitemap 并生成 sitemap_index.xml

  • 将 URL 列表按每 4 万条一组切分
  • 为每组生成独立 sitemap(如 sitemap-1.xml, sitemap-2.xml
  • sitemapindex 根节点汇总所有子 sitemap 的 loc 和可选 lastmod
  • 在 robots.txt 中添加 Sitemap: https://www.php.cn/link/e4639aefe47ac53c3df3d8f9846b5161sitemap_index.xml

自动化建议:集成到构建流程

不推荐手动生成。应将其嵌入网站构建环节:

  • 静态站点(如 Jekyll、Hugo、MkDocs):用插件或自定义脚本,在 build 后自动生成
  • Flask/Django:在管理命令或部署钩子中调用生成函数(Django 可直接用 django.contrib.sitemaps
  • CI/CD(如 GitHub Actions):添加 Python 步骤,每次 push 后更新并提交 sitemap.xml

保持 sitemap 与线上内容实时一致,比“一次性生成”更重要。

以上就是如何用Python生成sitemap.xml网站地图的详细内容,更多请关注其它相关文章!


# 可直接  # 西安网站优化推广怎么选  # 低价网站建设免费咨询  # 兴化市优化网站建设  # 茂名seo公司推荐30火星  # 莘县seo网站排名  # 关于母婴店的营销与推广  # 北京网站推广工资水平  # 手游推广营销成本  # 太仓网站建设免费  # 高端网站优化价格  # 最简单  # 第三方  # 自定义  # 三种  # python  # 可选  # 中英  # 企业网站  # 如何用  # 网站建设的网站  # yy  # 标准库  # django  # 搜索引擎  # ai  # github  # cms  # go  # git 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 鼠标没反应了怎么办 无线/有线鼠标失灵的解决方法【详解】  《宝可梦大集结》S4冠军之路开始时间介绍  b站怎么设置动态仅粉丝可见_b站动态粉丝可见设置方法  《sketchbook》选中部分图案移动方法  163邮箱网页版官方登录入口 163邮箱网页版访问页面  自定义你的VS Code状态栏,监控关键信息  c++如何实现一个简单的RPC框架_c++远程过程调用原理与实践  如何在mysql中使用索引提示_mysql索引提示优化方法  抖音商城官网是什么_抖音商城官方网址与访问方法  C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用  如何在CSS中使用伪类:valid实现表单验证提示_结合:valid改变边框颜色  b站怎么查看视频的码率_b站视频码率查看方法  Flexbox布局:实现粘性导航与底部页脚的完美结合  《360浏览器》设置摄像头权限方法  圆通快递官网入口查询单号 手机版官方查询入口  Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型  申通快递物流信息查询 申通快递包裹状态追踪  虫虫漫画排行榜单入口_虫虫漫画编辑推荐入口  解决Pandas DataFrame高度碎片化警告:高效创建多列的策略  mysql怎么导入sql文件_mysql导入sql文件的方法与技巧  批改网官网首页登录 批改网学生用户登录入口  《东方航空》添加乘机人方法  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  《雅迪智行》用手机开锁方法  VB表达式书写规则解析  基于 Flink 和 Kafka 实现高效流处理:连续查询与时间窗口  如何取消数字签名  《微信》视频号原创声明开启方法  Lar*el 中高效执行多列更新:单次查询实现  C++二维数组动态分配方法_C++指针与数组内存布局  《鹿路通》退余额方法  《全民k歌》音乐怎么下载到本地2025  163邮箱网页版入口 163邮箱在线使用  search中maxlength属性用法解析  Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解  iphone16系列配置参数介绍  CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化  iPhone12是否要更新ios16  支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法  抖音号已注销怎么解绑企业认证?不解绑企业认证会怎样?  Yandex无需登录畅游 俄罗斯搜索引擎最新官网指南  QQ邮箱手机版网页版 QQ邮箱登录入口地址  教育查询官方网站入口 教育个人档案查询免费官网  向日葵客户端怎么进行语音通话_向日葵客户端语音通话功能使用方法  我居然低估了 DeepSeek,这次更新它做到了这些!  不吃碳水化合物是健康减肥的好办法吗  LocoySpider如何批量采集电商商品_LocoySpider电商采集的模板应用  PHP安全加载非公开目录图片与动态内容类型处理指南  太平年在哪个平台播出  抖音猜你想搜能说明对方搜过吗 

 2025-12-18

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.