批量清理404死链并提交谷歌搜索引擎收录脚本
如果你的网站存在大量404死链,不仅影响用户体验,还会拖累搜索引擎对网站的评价。
手动逐个检查和提交效率极低,今天我来分享一套批量检测、清理死链并自动提交谷歌收录的脚本方案,零基础也能照着操作。
为什么需要批量处理404死链
谷歌会定期抓取站点内的链接,如果发现太多返回404的页面,可能降低对网站的信任度,甚至减少有效页面的收录。
及时清理死链,并把正常的链接重新提交,有助于保持站点健康度。
另外,如果旧页面已失效,最好在服务器端做301跳转或删除链接,而不是放任404累积。
前置准备:你需要的东西
- 一台Linux服务器(或本地电脑已安装Python 3环境)
- 网站根目录下的日志文件或站点地图(用于获取URL列表)
- 谷歌搜索控制台(Search Console)的API权限(用于自动提交)
- 基本的命令行操作知识(会复制粘贴命令即可)
如果你还没有谷歌Search Console的账号,先去 search.google.com/search-console 验证你的网站所有权,并获取API密钥。
核心脚本:检测+提交二合一
我们使用Python编写两个功能:
- 遍历URL列表,检测每个链接的状态码,记录404。
- 将状态正常的URL批量提交到谷歌索引。
安装依赖
pip install requests google-api-python-client google-auth-httplib2 google-auth-oauthlib
脚本代码(保存为 clean_and_submit.py)
import requests
import json
import os
# ---------- 配置区域 ----------
SITEMAP_URL = "https://example.com/sitemap.xml" # 站点地图地址,也可以改成自己准备的URL列表文件
GOOGLE_API_KEY = "your-google-api-key" # 在Google Cloud Console中创建
SITE_URL = "sc:https://example.com/" # Search Console中看到的网站地址
EXPORT_FILE = "dead_links.txt" # 输出死链文件
# ----------------------------
def check_url(url):
try:
resp = requests.get(url, timeout=10, allow_redirects=False)
if resp.status_code == 404:
return False
if resp.status_code >= 400:
return False
return True
except:
return False
def submit_to_google(url_list):
from google.oauth2 import service_account
from googleapiclient.discovery import build
credentials = service_account.Credentials.from_service_account_file(
'service_account.json',
scopes=['https://www.googleapis.com/auth/webmasters']
)
service = build('webmasters', 'v3', credentials=credentials)
for url in url_list:
request = {
'url': url
}
service.urlInspection().index().inspect(
siteUrl=SITE_URL,
body={'inspectionUrl': url, 'languageCode': 'en-US'}
).execute()
# 更常用的方法是使用 Indexing API 提交,但需要额外配置
# 这里简化演示,实际提交可使用 indexing API
print(f"Submitted: {url}")
# ---------- 主流程 ----------
# 获取所有URL(这里假设从sitemap解析,实际可用库)
import xml.etree.ElementTree as ET
resp = requests.get(SITEMAP_URL)
root = ET.fromstring(resp.content)
namespace = {'ns': 'http://www.sitemaps.org/schemas/sitemap/0.9'}
urls = [loc.text for loc in root.findall('.//ns:loc', namespace)]
good_urls = []
bad_urls = []
for url in urls:
print(f"Checking {url}")
if check_url(url):
good_urls.append(url)
else:
bad_urls.append(url)
# 写出死链列表
with open(EXPORT_FILE, 'w') as f:
for u in bad_urls:
f.write(u + '\n')
print(f"发现 {len(bad_urls)} 个死链,已保存到 {EXPORT_FILE}")
# 提交有效的URL(建议每次只提交少量,避免触发频率限制)
submit_list = good_urls[:20] # 示例每次只提交前20个
submit_to_google(submit_list)
注意:上面的提交函数使用了URL Inspection API做演示,实际批量提交更推荐 Indexing API,需要申请 quota。你可以自行搜索“Google Indexing API Python”获得完整代码。
运行脚本
python3 clean_and_submit.py
避坑指南
- 不要一次性提交过多URL:谷歌有速率限制,建议每次提交不超过50个,间隔1天以上。
- 死链处理建议:对于重要的旧链接,最好在服务器上做301跳转到新页面,而非简单删除。
- API密钥安全:service_account.json 文件不要上传到公开仓库。
- URL列表来源:除了sitemap,你也可以从网站日志中提取最近报404的链接,更精准。
- 404页面的处理:如果网站框架本身返回软404(状态码200但内容提示错误),脚本无法准确判断,需要在代码中增加内容检测逻辑。
效果验证
- 在谷歌Search Console中查看“页面索引”报告,确认提交的URL是否已被收录。
- 重新运行脚本,检查死链列表是否减少。
- 使用在线工具(如 Screaming Frog)再次扫描全站,对比死链数量。
常见问题解答
Q:我用的是Windows,能运行这个脚本吗?
A:可以,Windows下安装Python 3,同样执行 pip install requests,但需要自己处理文件路径和中文编码问题。
Q:生成的死链文件怎么用?
A:你可以手动在网站后台删除这些链接,或者批量设置301跳转。也可以将文件导入到其他工具进一步分析。
Q:提交后多久能收录?
A:谷歌不会承诺时间,通常1-7天可能有结果。建议隔一周再检查。
Q:我的网站没有sitemap怎么办?
A:你可以自己准备一个文本文件,每行一个URL,然后修改脚本读取这个文件即可。
如果你正在解决网站死链问题,建议先完整执行上述流程,再根据实际环境调整提交频率和死链处理策略。
遇到异常时,优先检查API密钥权限和网络连通性。
(全文完)