站点地图的作用,是给爬虫一份“本站有哪些页面”的清单,省去它靠自己一个个链接去猜的功夫。内容多的站尤其需要,不然新发的文章可能很久都轮不到被抓。sitemap怎么生成,说穿了就三步:定好放哪些地址、用脚本把 XML 写出来、交给平台并让它自动更新。下面按这三步走一遍,从零到能自动跑。
一、先定清单:只放你希望被收录的页面
现象:有人把全站地址一股脑塞进去,后台、搜索结果页、带一堆参数的地址全在里面,文件几兆大,爬虫反而抓得乱。
原因:站点地图是“推荐抓取列表”,不是“地址全集”。放进去的每个地址都在占用抓取预算,低质地址混在里面,会稀释真正重要页面的机会。
做法:只收录三类地址——栏目页、文章详情页、必要的聚合页。后台、登录页、带参数的筛选页、已被屏蔽的目录一律不放。单份站点地图限制在五万个地址以内,超过就拆成多份,用索引文件串起来。文章多的站建议按栏目或按月份拆分,管理起来更清楚。
二、用脚本生成 sitemap.xml
这段脚本的用途是把一批 URL 直接写成规范的 sitemap.xml。要改两处:URLS 里填你的页面清单(可从数据库或栏目列表导出),LASTMOD 填最近更新时间。跑完在当前目录得到 sitemap.xml,每个地址带 loc 和 lastmod 两个字段,lastmod 用日期即可,不必写具体到秒。生成的文件传到网站根目录,用浏览器访问确认能正常打开。
# 把 URL 清单生成为标准 sitemap.xml(含 loc 与 lastmod)
URLS = [ # 改成你的页面清单
"https://www.example.com/",
"https://www.example.com/post/a.html",
"https://www.example.com/post/b.html",
]
LASTMOD = "2026-09-13" # 改成最近更新时间
lines = ['',
'']
for u in URLS:
lines.append(" ")
lines.append(" %s" % u)
lines.append(" %s" % LASTMOD)
lines.append(" ")
lines.append("")
with open("sitemap.xml", "w", encoding="utf-8") as f:
f.write("\n".join(lines))
print("sitemap.xml 已生成,共", len(URLS), "个地址")
跑完先自己做一次语法检查,用浏览器打开 sitemap.xml,如果提示 XML 解析错误,多半是少了闭合标签或编码不对。确认能正常显示后,再看每个地址是不是都能打开、返回正常状态,别把死链写进去,那会让爬虫白跑。
三、提交:让平台知道清单在哪
站点地图生成好、上传到根目录后,还要主动告诉平台。到百度搜索资源平台里找到站点地图提交入口,填上 sitemap.xml 的完整地址。平台提供提交与状态查看功能,提交后能看到已提交数量和被发现情况。另一个省事的做法是在 robots.txt 里加一行 Sitemap 指令指向它,爬虫读到 robots 文件就能顺带发现清单,两个入口保持一致即可。
四、自动更新:别再手工传
站点地图最大的问题不是生成,是忘了更新。新文章发了一周,清单里还是上个月的内容,等于没提交。解决办法是把它做成定时任务:每天固定时间跑一次生成脚本,从数据库读出最新地址,覆盖旧的 sitemap.xml。命令写成一条,挂到服务器的定时任务里,你只负责发文章,清单自动跟上。判断是否成功很简单:隔一天访问 sitemap.xml,看里面有没有昨天发的文章地址;有,说明流程接上了。
站点地图这件事的完成标准是“自动跑”:清单只放要收录的页、脚本一键生成、平台提交到位、每天定时覆盖;四步接上,你就再也不用手工维护这个文件了。
相关阅读:
A5创业网 版权所有