Python小工具-sitemap转换工具
声明:工具免费分享,不可以用来牟利,有需要的可以下方进行评论留言。
周五公司运营同事,给我发过来8个网站的sitemap文件,都是xml格式的,这个也是网站地图最常见的格式。同时呢,这个项目有移动端网址,需要将sitemap文件中的www批量替换成m。其实这一步骤挺简单的,复制一下文件,批量替换就行了,但是我懒啊。这么繁琐的工作的也不是程序员能干的。于是就有了写个小工具的想法。
想法
发过来的sitemap文件都是在一个文件夹内,那么我们直接将整个文件夹下的所有sitemap文件都提取出来,然后按个进行转换操作。并将文件进行操作命名。
获取目录下所有符合文件
# 返回目录下所有文件 def get_path_file(files_path): data = [] for root, dirs, files in os.walk(files_path, topdown=False): for name in files: f_p = os.path.join(root, name).replace("\\", "/") file_type = os.path.splitext(f_p) if file_type[1] == '.xml': if " " in file_type[0]: os.rename(f_p, f_p.replace(" ", "")) f_p = f_p.replace(" ", "") data.append(f_p) return data
工具一、http替换https
# 转换 def main(v): print("正在转换:%s" % v) file_data = os.path.splitext(v) new_name = "%s_https%s" % (file_data[0], file_data[1]) fp = open(new_name, 'a', encoding="UTF-8") with open(v, 'r', encoding="UTF-8") as f: for line in f: if "http://" in line: line = line.replace("http://", "https://") fp.write(line) fp.close() print("转换完成:%s" % v)
工具二、www替换m
# 转换 def main(v): print("正在转换:%s" % v) file_data = os.path.splitext(v) new_name = "%s_m%s" % (file_data[0], file_data[1]) fp = open(new_name, 'a', encoding="UTF-8") with open(v, 'r', encoding="UTF-8") as f: for line in f: if "http" in line: line = line.replace("www", 'm') if "http://" in line: line = line.replace("http://", "https://") fp.write(line) fp.close() print("转换完成:%s" % v)
工具三、百度格式转换头条格式
# 转换 def main(v): print("正在转换:%s" % v) file_data = os.path.splitext(v) new_name = "%s_toutiao%s" % (file_data[0], file_data[1]) fp = open(new_name, 'a', encoding="UTF-8") fp.write("<DOCUMENT>\n") fp.write("<item>\n") fp.write("<display>\n") with open(v, 'r', encoding="UTF-8") as f: for line in f: if "https://" in line: res = re.findall(r"<loc>.*?<\/loc>", line) if res[0]: line = res[0].replace("<loc>", "<url><![CDATA[") line = line.replace("</loc>", "]]></url>") fp.write(line + "\n") fp.write("</display>\n") fp.write("</item>\n") fp.close() print("转换完成:%s" % v)
这里面我们是按照多次写入格式头和格式尾做的,也可以一次性写入。
实验结果
转换速度非常快,sitemap文件格式百度方面要求不超过5万条,文件大小不超过10M,这里面我们没有使用工具去做判断和调整,因为我们的工具是以转化为主。5万条的数据使用内存去读取,还是没有任何压力的。我这次实验转化了20万条的数据,转化过程在不到一分钟就完成了,速度还是非常快的,并且我将代码生成了exe可执行程序,运营人员也可以直接操作了。提高了整体的效率。