千羽博客

千羽博客
PHP,Python,C#
  1. 首页
  2. Python
  3. 正文

Python写的生成sitemap.xml站点地图的脚本

2022年6月9日 47点热度 0人点赞 0条评论
可以由其他脚本引用然后调用方法使用,也可以直接本脚本里面加代码使用,先用自己的业务代码处理出需要制作站点地图的链接,然后传到"生成站点地图"方法生成sitemap.xml文件,这个脚本是我网上找些现成的代码拼拼凑凑弄出来的.
# -*- coding:utf-8 -*-

 

import datetime
import re

 

def get_url():
    with open('url.txt', 'r', encoding='UTF-8') as f:
        list1 = []
        for i in f:
            line = i.strip()
            list1.append(line)

 

        return list1

 

def creat_xml(filename, url_list):  # 生成sitemap所需要的xml方法
    header = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n'
    file = open(filename, 'a', encoding='utf-8')
    file.writelines(header)
    file.close()

 

    for url in url_list:
        times = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S+00:00")
        urls = re.sub(r"&", "&amp;", url)  # 注意这里,在URL中如果含有&将会出错,所以需要进行转义

 

        # 这个是生成的主体,可根据需求进行修改
        ment = "  <url>\n    <loc>%s</loc>\n    <lastmod>%s</lastmod>\n  </url>\n" % (urls, times)

 

        file = open(filename, 'a', encoding='utf-8')
        file.writelines(ment)
        file.close()

 

    last = "</urlset>"
    file = open(filename, 'a', encoding='utf-8')
    file.writelines(last)
    file.close()
def 创建xml(filename, url_list):  # 生成sitemap所需要的xml方法
    header = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n'
    file = open(filename, 'a', encoding='utf-8')
    file.writelines(header)
    file.close()

 

    for url in url_list:
        urls = re.sub(r"&", "&amp;", url)  # 注意这里,在URL中如果含有&将会出错,所以需要进行转义

 

        # 这个是生成的主体,可根据需求进行修改
        ment = "  <url>\n    <loc>%s</loc>\n    </url>\n" % (urls)

 

        file = open(filename, 'a', encoding='utf-8')
        file.writelines(ment)
        file.close()

 

    last = "</urlset>"
    file = open(filename, 'a', encoding='utf-8')
    file.writelines(last)
    file.close()
def 数组切割(list_collection, n):
    """
    将集合均分,每份n个元素
    :param list_collection:
    :param n:
    :return:返回的结果为评分后的每份可迭代对象
    """
    for i in range(0, len(list_collection), n):
        yield list_collection[i: i + n]
def 生成站点地图(全部链接数组,每个站点地图文件的最大链接数量=50000,站点地图文件名前缀="sitemap"):
    """
    生成传入链接数组的站点地图,传入的数量无限制
    """
    temp=数组切割(全部链接数组,每个站点地图文件的最大链接数量)
    文件计数器 = 0
    for 单个文件里的链接数组 in temp:
        文件计数器+=1
        创建xml(站点地图文件名前缀 + str(文件计数器) + ".xml",单个文件里的链接数组)
        print("生成站点地图文件 "+站点地图文件名前缀 + str(文件计数器) + ".xml" +" 成功!")
if __name__ == '__main__':
    需要生成站点地图的链接 = ["https://a.com","https://b.com","https://c.com","https://d.com","https://e.com"]
    生成站点地图(需要生成站点地图的链接)   #默认单个文件链接数量50000,默认文件名前缀sitemap
    # 生成站点地图(需要生成站点地图的链接,2)   #单个文件链接数量设置为2,默认文件名前缀sitemap
    # 生成站点地图(需要生成站点地图的链接,2,"baidu")   #单个文件链接数量设置为2,文件名前缀为baidu
标签: Python seo
最后更新:2022年6月9日

千羽 千鹤

欲望推我前行

点赞
< 上一篇

文章评论

取消回复

COPYRIGHT © 2021 千羽博客. ALL RIGHTS RESERVED.