前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python小工具-sitemap转换工具

Python小工具-sitemap转换工具

作者头像
申霖
发布2020-03-31 09:33:59
3750
发布2020-03-31 09:33:59
举报
文章被收录于专栏:小白程序猿小白程序猿

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

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

c8bc58c8796740c2bf55c625d56ef073.jpg
c8bc58c8796740c2bf55c625d56ef073.jpg

想法

发过来的sitemap文件都是在一个文件夹内,那么我们直接将整个文件夹下的所有sitemap文件都提取出来,然后按个进行转换操作。并将文件进行操作命名。

获取目录下所有符合文件

代码语言:javascript
复制
# 返回目录下所有文件
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

代码语言:javascript
复制
# 转换
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

代码语言:javascript
复制
# 转换
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)

工具三、百度格式转换头条格式

代码语言:javascript
复制
# 转换
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可执行程序,运营人员也可以直接操作了。提高了整体的效率。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 想法
  • 工具一、http替换https
  • 工具二、www替换m
  • 工具三、百度格式转换头条格式
  • 实验结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档