本文目录导读:

- 静态站点生成器(如 Hugo、Jekyll、Next.js、Gatsby)
- 动态网站(PHP、Python、Node.js 等)
- 使用现成的命令行工具
- CMS 系统(WordPress、Drupal 等)
- ⚠️ 注意事项
是的,脚本可以自动生成网站地图(Sitemap),根据你的技术栈和网站类型(静态或动态),有多种方法可以实现,以下是常见的几种方案:
静态站点生成器(如 Hugo、Jekyll、Next.js、Gatsby)
这些框架通常内置或通过插件支持自动生成 sitemap.xml。
- Next.js:使用
next-sitemap插件,在构建时自动生成。 - Gatsby:使用
gatsby-plugin-sitemap,构建时生成。 - Hugo:配置
config.toml中的[outputFormats]和[mediaTypes],或使用模板生成。 - Jekyll:使用
jekyll-sitemap插件。
示例(Next.js + next-sitemap):
// next.config.js
const withSitemap = require('next-sitemap')();
module.exports = withSitemap({
siteUrl: 'https://example.com',
generateRobotsTxt: true,
});
运行 npm run build 后自动生成 sitemap.xml。
动态网站(PHP、Python、Node.js 等)
可以编写脚本来爬取网站链接并生成 sitemap。
Python 示例(使用 requests + BeautifulSoup)
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def crawl_sitemap(base_url):
visited = set()
sitemap = ['<?xml version="1.0" encoding="UTF-8"?>']
sitemap.append('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">')
def crawl(url):
if url in visited:
return
visited.add(url)
try:
response = requests.get(url, timeout=5)
except:
return
soup = BeautifulSoup(response.text, 'html.parser')
# 添加当前页面到 sitemap
sitemap.append(f' <url><loc>{url}</loc></url>')
# 寻找页面内链接
for link in soup.find_all('a', href=True):
full_url = urljoin(base_url, link['href'])
if full_url.startswith(base_url) and full_url not in visited:
crawl(full_url)
crawl(base_url)
sitemap.append('</urlset>')
return '\n'.join(sitemap)
# 使用
sitemap_xml = crawl_sitemap('https://example.com')
with open('sitemap.xml', 'w', encoding='utf-8') as f:
f.write(sitemap_xml)
Node.js 示例(使用 sitemap 包)
npm install sitemap
const { SitemapStream, streamToPromise } = require('sitemap');
const { createWriteStream } = require('fs');
async function generateSitemap() {
const smStream = new SitemapStream({ hostname: 'https://example.com' });
const writeStream = createWriteStream('./sitemap.xml');
smStream.pipe(writeStream);
// 添加页面
smStream.write({ url: '/', changefreq: 'daily', priority: 1.0 });
smStream.write({ url: '/about', changefreq: 'monthly', priority: 0.8 });
// ... 更多页面
smStream.end();
await streamToPromise(smStream);
console.log('Sitemap generated');
}
generateSitemap();
使用现成的命令行工具
sitemap-generator-cli(Node.js):npx sitemap-generator-cli https://example.comrobots.txt+ 在线工具:先用机器人抓取,再用工具生成(如XML-sitemaps.com)。
CMS 系统(WordPress、Drupal 等)
- WordPress:安装 SEO 插件(如 Yoast SEO、Rank Math),自动生成并更新 sitemap。
- Drupal:使用
XML sitemap模块。 - Joomla:使用
JSitemap组件。
⚠️ 注意事项
- 爬虫频率:不要频繁爬取自己的网站,避免服务器压力。
- :如果网站有大量动态页面(如搜索结果、用户页面),只索引重要的页面。
- 多语言站点:需要在 sitemap 中添加
hreflang- 更新频率:建议将 sitemap 生成脚本集成到 CI/CD 流程中,每次部署时自动更新。
- 静态网站:推荐使用构建工具插件,简单高效。
- 动态网站:写爬虫脚本或用现成库,灵活可控。
- CMS:直接用插件,零代码。
如果需要更具体的方案,请告诉我你的技术栈(如 WordPress、Next.js、Django 等)或网站类型,我可以提供定制化的脚本示例。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播