flask实现站点地图(sitemap.xml)功能

站点地图是为了更好的方便搜索引擎的爬虫来抓取网站文章,这样能够更好的提升收录,后面可以提升权重和被用户查找到文章的概率,所以今天我们就来使用flask实现站点地图的功能。

实际上,实现这个功能主要使用flask的Response模块,这个模块可以响应请求生成html响应返回给浏览器端。最重效果可以查看:https://sulao.cn/sitemap.xml

我的代码实现如下,也不需要过多介绍,如果你也是flask,基本都可以改改给自己的网站使用。

@article.route('/sitemap.xml', methods=['GET'])
def sitemap():
        posts = BPost.select().where(BPost.is_show == 1).order_by(BPost.id.desc()).limit(200)
        static_urls = [
                {
                    'loc': request.url_root,
                    'lastmod': datetime.datetime.now().date(),
                    'priority': 1.0
                },
                {
                    'loc': url_for('article.toolkits'),
                    'lastmod': datetime.datetime.now().date(),
                    'priority': 1.0
                }
        ]
        post_urls = [{
                        'loc': url_for('article.post', id=post.id),
                        'lastmod': str(post.post_time)[:10],
                        'priority': 0.8
        } for post in posts]

        all_urls = static_urls + post_urls
        xml = ['<?xml version="1.0" encoding="UTF-8"?>']
        xml.append('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">')
        for url in all_urls:
                xml.append('<url>')
                xml.append(f'<loc>{urljoin(request.url_root, url["loc"])}</loc>')
                xml.append(f'<lastmod>{url.get("lastmod")}</lastmod>')
                xml.append(f'<priority>{url.get("priority")}</priority>')
                xml.append('</url>')
        xml.append('</urlset>')
        return Response('\n'.join(xml), mimetype='application/xml')

202508312225184675266263.png

sitemap 的话必须包含以下这些要求:
网站所有公开页面的 URL
重要页面(首页、分类页、核心内容页)
可选元数据:
<lastmod>:最后修改日期(ISO 8601 格式)
<changefreq>:更新频率(always/hourly/daily/weekly/monthly/yearly/never)
<priority>:优先级(0.0 ~ 1.0,首页建议 1.0)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1127

评论列表

0%