You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码排除站点地图(sitemap)中的404错误URL?

排除站点地图中的404错误URL解决方案

要去掉站点地图里的404链接,核心是在生成条目之前先验证每个URL的访问状态,只保留能正常访问(返回200状态码)的地址。我们可以借助requests库来发送HTTP请求并检查响应状态,具体修改如下:

步骤1:添加必要依赖

先导入requests库,如果本地没安装,先执行pip install requests完成安装。

步骤2:修改循环逻辑,加入URL有效性检查

在遍历页面的循环里,先对每个URL发送请求,只有响应状态码为200时才生成站点地图条目;同时处理请求异常(比如连接超时、DNS失败等),这类异常链接直接排除。

修改后的完整代码

from usp.tree import sitemap_tree_for_homepage
import xml.etree.cElementTree as ET
import simplejson as json
from datetime import date
import requests
from time import sleep

tree = sitemap_tree_for_homepage('你的网站首页地址')  # 替换为实际网站首页URL

root = ET.Element("urlset", xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")

for page in tree.all_pages():
    url = page.url
    try:
        # 发送GET请求并设置超时,避免程序卡壳
        response = requests.get(url, timeout=10)
        # 仅保留状态码为200的正常链接
        if response.status_code != 200:
            continue
        # 可选:添加延时降低请求频率,避免触发网站反爬
        sleep(0.5)
    except requests.exceptions.RequestException:
        # 捕获所有请求异常,直接跳过该URL
        continue
    
    prio = json.dumps(page.priority, use_decimal=True)
    lm = date.today().strftime("%Y-%m-%d")
    cf = page.change_frequency.value
    urlel = ET.SubElement(root, "url")
    ET.SubElement(urlel, "loc").text = url
    ET.SubElement(urlel, "lastmod").text = lm
    ET.SubElement(urlel, "changefreq").text = cf
    ET.SubElement(urlel, "priority").text = prio

ET.indent(root, "  ")
xmltree = ET.ElementTree(root)
xmltree.write("sitemap.xml", encoding="utf-8", xml_declaration=True )

关键说明

  • requests.get(url, timeout=10):发送请求并设置10秒超时,防止单个异常链接卡住整个程序
  • 状态码判断:仅保留返回200的链接,404、500等错误状态的URL直接跳过
  • 异常捕获:用try-except处理网络中断、DNS解析失败等所有请求异常,这类链接也不会被加入站点地图
  • 可选延时:sleep(0.5)可降低请求频率,避免触发网站反爬机制,可根据实际情况调整时长

内容的提问来源于stack exchange,提问作者May

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:55:20