Python小工具-sitemap转换工具

发布时间:2020-03-29 16:41:35 浏览量:1160 标签: Python sitemap

声明:工具免费分享,不可以用来牟利,有需要的可以下方进行评论留言。

周五公司运营同事,给我发过来8个网站的sitemap文件,都是xml格式的,这个也是网站地图最常见的格式。同时呢,这个项目有移动端网址,需要将sitemap文件中的www批量替换成m。其实这一步骤挺简单的,复制一下文件,批量替换就行了,但是我懒啊。这么繁琐的工作的也不是程序员能干的。于是就有了写个小工具的想法。

c8bc58c8796740c2bf55c625d56ef073.jpg

想法

发过来的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可执行程序,运营人员也可以直接操作了。提高了整体的效率。




评论
登录后才可以进行评论哦! QQ登录
验证码
评论内容