生成网站sitemap.xml地图教程

要生成 sitemap.xml 文件,需要通过爬虫程序抓取网站的所有有效链接。以下是完整的解决方案:


步骤 1:安装必要的 Python 库

  • ounter(line
pip install requests beautifulsoup4 lxml

步骤 2:创建 Python 爬虫脚本 (sitemap_generator.py)

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
import requestsfrom bs4 import BeautifulSoupfrom urllib.parse import urljoin, urlparseimport xml.etree.ElementTree as ETfrom datetime import datetime
def get_all_links(base_url):    # 存储已访问和待访问的链接    visited = set()    queue = [base_url]    all_links = set()
    while queue:        url = queue.pop(0)        if url in visited:            continue
        try:            headers = {                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'            }            response = requests.get(url, headers=headers, timeout=10)            if response.status_code != 200:                continue
            # 添加到已访问列表            visited.add(url)            all_links.add(url)            print(f"Crawled: {url}")
            # 解析 HTML 获取新链接            soup = BeautifulSoup(response.text, 'lxml')            for link in soup.find_all('a', href=True):                href = link['href'].strip()                full_url = urljoin(url, href)
                # 过滤无效链接                parsed = urlparse(full_url)                if parsed.scheme not in ('http', 'https'):                    continue                if not parsed.netloc.endswith('91kaiye.cn'):  # 仅限本站链接                    continue                if '#' in full_url:  # 忽略锚点                    full_url = full_url.split('#')[0]
                # 添加到待访问队列                if full_url not in visited:                    queue.append(full_url)
        except Exception as e:            print(f"Error crawling {url}: {str(e)}")
    return all_links
def create_sitemap(links, filename='sitemap.xml'):    root = ET.Element('urlset', xmlns='http://www.sitemaps.org/schemas/sitemap/0.9')        for link in sorted(links):        url_elem = ET.SubElement(root, 'url')        ET.SubElement(url_elem, 'loc').text = link        ET.SubElement(url_elem, 'lastmod').text = datetime.now().strftime('%Y-%m-%d')        ET.SubElement(url_elem, 'changefreq').text = 'daily'        ET.SubElement(url_elem, 'priority').text = '0.8'        tree = ET.ElementTree(root)    tree.write(filename, encoding='utf-8', xml_declaration=True)    print(f"\nSitemap generated: {filename} with {len(links)} URLs")
if __name__ == '__main__':    base_url = 'https://www.91kaiye.cn/'    print("Starting crawl...")    links = get_all_links(base_url)    create_sitemap(links)

步骤 3:运行脚本

  • ounter(line
python sitemap_generator.py

执行说明:

  1. 爬虫逻辑

    • 从首页 https://www.91kaiye.cn/ 开始广度优先搜索

    • 自动过滤非本站链接、锚点和无效 URL

    • 记录每个页面的最后修改日期(默认当天)

    • 设置更新频率为 daily,优先级为 0.8

  2. 输出文件

    • 生成的 sitemap.xml 格式如下:
      • ounter(line
      • ounter(line
      • ounter(line
      • ounter(line
      • ounter(line
      • ounter(line
      • ounter(line
      • ounter(line
      • ounter(line
      • ounter(line
      <?xml version='1.0' encoding='utf-8'?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">  <url>    <loc>https://www.91kaiye.cn/page1</loc>    <lastmod>2023-10-05</lastmod>    <changefreq>daily</changefreq>    <priority>0.8</priority>  </url>  ...</urlset>

注意事项:

  1. 反爬措施

    • 如果网站有反爬机制,可能需要:
      • 添加 time.sleep(1) 延迟请求

      • 使用代理 IP

      • 设置更真实的请求头

  2. 动态内容

    • 对于 JavaScript 渲染的页面(如 Vue/React),需改用 SeleniumPlaywright

  3. 优化建议

    • 在服务器上定期运行(如每周一次)

    • 提交到 Google Search Console

    • robots.txt 中添加:
      • ounter(line
      Sitemap: https://www.91kaiye.cn/sitemap.xml

替代方案:使用在线工具

如果不想运行代码,可用在线服务生成:

  1. XML-Sitemaps.com

  2. Screaming Frog SEO Spider(桌面工具)


生成后请将 sitemap.xml 上传到网站根目录,并通过百度/Google站长工具提交。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917810.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea拉取新项目第一次启动报内存溢出(java.lang.OutOfMemoryError: Java heap space)

背景&#xff1a; 新拉取一个项目后&#xff0c;第一次启动的时候报错内存溢出&#xff1a; Java 堆内存溢出 (java.lang.OutOfMemoryError: Java heap space) 这个错误表示你的 Java 应用程序需要的内存超过了 JVM 堆内存的分配上限。 解决方案 1.增加堆内存大小 启动应用时添…

安卓雷电模拟器安装frida调试

1.在模拟器中设置调试root和adb 2.在vscode中安装autox.js 3.在github上下载auto.js组件 新地址链接看来大佬的项目也经历了波折https://blog.csdn.net/weixin_41961749/article/details/145669531 github地址https://github.com/aiselp/AutoX/releases 将下载的apk放入雷电…

Godot ------ 初级人物血条制作02

Godot ------ 初级人物血条制作02引言正文血条动态显示引言 在 Godot ------ 初级人物血条制作01 一文中我们介绍了如何构建一个初级血条&#xff0c;但是我们并没有涉及如何动态显示血条。本文我们将介绍如何动态显示血条。 正文 血条动态显示 首先&#xff0c;我们为当前…

(Python)待办事项升级网页版(html)(Python项目)

源代码&#xff1a; app.py from flask import Flask, render_template, request, redirect, url_for, jsonify import json import osapp Flask(__name__)# 数据存储文件 DATA_FILE "todos.json"def load_todos():"""从文件加载待办事项"&q…

智慧养老破局:科技如何让“老有所养”变成“老有优养”?

随着人口老龄化加剧&#xff0c;“养老”成了社会关注的焦点。传统养老往往停留在“有地方住、有人照顾”的基础需求&#xff0c;而智慧养老则通过科技与人文的结合&#xff0c;让老年人的生活从“老有所养”升级到“老有优养”。不仅活得安心&#xff0c;更能活得有尊严、有质…

自学嵌入式 day45 ARM体系架构

一、SOCRAM&#xff1a;随机访问存储器&#xff0c;存放随机变量&#xff0c;掉电数据丢失ROM&#xff1a;只读存储器&#xff0c;存放单片机的程序、指令&#xff0c;掉电数据不丢失注&#xff1a;1、冯诺依曼架构中将数据与指令存放在同一存储器中2、哈佛架构是将数据与指令存…

HTML应用指南:利用GET请求获取全国OPPO官方授权体验店门店位置信息

本篇文章将利用GET请求从OPPO官方网站或公开接口中获取官方授权体验店的分布信息&#xff0c;并通过Python编程语言中的requests库来实现HTTP请求&#xff0c;从而提取详细的门店位置数据。随着OPPO品牌的发展和市场布局的扩展&#xff0c;其官方授权体验店已经遍布全国各大城市…

Self-RAG:基于自我反思的检索增强生成框架技术解析

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 一、核心定义与原始论文 Self-RAG&#xff08;Self-Reflective Retri…

【YOLOv8改进 - C2f融合】C2f融合DBlock(Decoder Block):解码器块,去模糊和提升图像清晰度

YOLOv8目标检测创新改进与实战案例专栏 专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例 专栏链接: YOLOv8基础解析+创新改进+实战案例 文章目录 YOLOv8目标检测创新改进与实战案例专栏 介绍 摘要 文…

LLamafactory是什么?

LLamaFactory是一个专注于大型语言模型&#xff08;LLM&#xff09;训练、微调和部署的开源工具平台&#xff0c;旨在简化大模型的应用开发流程。‌1.核心功能与特点‌LlamaFactory&#xff08;全称Large Language Model Factory&#xff09;作为一站式AI开发工具平台&#xff…

Element Plus编辑表格时的页面回显(scope)

1、前提&#xff1a;自定义列模版(把id作为参数&#xff0c;传递到调用的edit函数里)<template #default"scope"><el-button type"primary" size"small" click"edit(scope.row.id)"><el-icon><EditPen /><…

河南萌新联赛2025第四场-河南大学

今天又是坐牢的一次比赛&#xff0c;恭喜获得本次比赛称号&#xff1a;挂机王&#xff0c;一个签到题能卡住两个小时&#xff0c;这两个小时简直坐的我怀疑人生&#xff0c;实在是找不出哪里错了&#xff0c;后来快结束的时候才发现少了一个等于号&#xff0c;也不至于连签到题…

【Excel】通过Index函数向下拖动单元格并【重复引用/循环引用】数据源

文章目录CASE1: 列数据源&#xff0c;向下拖动&#xff0c;每个单元重复N次步骤1&#xff1a;基本的INDEX函数步骤2&#xff1a;添加行号计算步骤3&#xff1a;添加绝对引用以便拖动CASE2:列数据源&#xff0c;向下拖动&#xff0c;每个单元重复1次&#xff0c;周而复始步骤1&a…

潜行者2:切尔诺贝利之心 全DLC 送修改器(S2HOC)免安装中文版

网盘链接&#xff1a; 潜行者2&#xff1a;切尔诺贝利之心 免安装中文版 名称&#xff1a;潜行者2&#xff1a;切尔诺贝利之心 全DLC 送修改器&#xff08;S2HOC&#xff09;免安装中文版 描述&#xff1a; 探索传奇的《潜行者》世界&#xff0c;同时体验&#xff1a; 融合…

系统运维之LiveCD详解

基本概念LiveCD是一个包含完整可运行操作系统的光盘映像&#xff0c;能够在不影响主机系统的情况下启动计算机。工作原理系统从LiveCD介质启动 将必要文件加载到内存中运行 通常使用RAM磁盘作为临时文件系统 关机后所有更改默认不保存&#xff08;除非特别配置&#xff0…

达梦分布式集群DPC_分布式任务执行拆分流程_yxy

达梦分布式集群DPC_分布式执行计划执行拆分流程 1 DPC任务拆分原理 1.1 分布式架构思想 1.2 DPC如何实现任务拆分? 2 DPC任务拆分完整示例 2.1 单表查询 2.1.1 创建分区表,存储在不同BP上 2.1.2 生成sql的最佳执行计划 2.1.3 代码生成并执行、拆分 2.1.3.1 任务拆分步骤 2.1.…

怎么免费建立自己的网站步骤

以下是免费建立个人网站的详细步骤&#xff0c;结合多种方案和工具推荐&#xff1a; 一、零基础快速建站方案 ‌选择免费建站平台‌ PageAdmin CMS‌&#xff1a; 1、提供开源模板&#xff0c;模板可以自定义界面和风格&#xff0c;同时支持原创设计和定制。 2、后台支持自定义…

使用ASIWebPageRequest库编写Objective-C下载器程序

全文目录&#xff1a;开篇语前言为什么选择ASIWebPageRequest&#xff1f;安装ASIWebPageRequest库编写下载器程序1. 导入必要的库2. 创建下载任务3. 设置下载保存路径4. 发起下载请求5. 更新下载进度6. 处理下载完成7. 处理下载失败完整代码示例8. 运行程序总结文末开篇语 哈喽…

mathtype加载项搞崩了word(上)

一、Mathtype更新后word异常 在mathtype更新后&#xff0c;打开word文件时一直报宏的错&#xff1a; 点击“取消”&#xff1a; 点击“确定”&#xff1a; 点击“确定”&#xff1a; 点击“确定”&#xff1a; 还有一堆小弹窗&#xff0c;最后还是能打开word文件&#xff1a; …