专栏首页小白程序猿Python小工具-sitemap转换工具

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IPhone已停用连接ITunes解决方案

    苹果是比较注重个人隐私保护的,在用户或者他人多次尝试输入密码错误情况下,会启动保护机制,显示设备已停用,使其无法正常工作,关于出现这个问题怎么办呢?

    小白程序猿
  • 博客系统开发-后台模块创建及相关路由配置

    今天来说一下“博客系统开发-后台模块创建及相关路由配置”,继昨天‘博客开发-框架安装及网站配置’,我们今天来写后台模块、配置强制路由模式、创建后台公共控制器、首...

    小白程序猿
  • 如何通过IP地址获取用户所在城市?

    在日常开发过程中,经常有通过IP去获取用户位置,或在服务器日志中查看到各种各样的ip地址,如何通过ip地址去获取用户的信息呢?比如所在城市,网络提供商是联通,移...

    小白程序猿
  • 浅谈pymysql查询语句中带有in时传递参数的问题

    补充知识:Python将多行数据处理成SQL语句中where条件in(‘ ‘,’ ‘,’ ‘)的数据

    砸漏
  • DRF框架学习(四)

    重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。

    小闫同学啊
  • 如何用代码动态生成ABAP类型

    In one of my project the data type of the variable to hold service consumption r...

    Jerry Wang
  • ABP入门系列(8)——Json格式化

    讲完了分页功能,这一节我们先不急着实现新的功能。来简要介绍下Abp中Json的用法。为什么要在这一节讲呢?当然是做铺垫啊,后面的系列文章会经常和Json这个东...

    圣杰
  • Multidex记录三:源码解析

    为什么要用记录呢,因为我从开始接触Android时我们的项目就在65535的边缘。不久Google就出了multidex的解决方案。我们也已经接入multide...

    静默加载
  • 适用于 Linux 系统的 11 款图像查看器

    Linux 桌面系统中都默认自带了不错的图像查看器,除非您要使用某个特定的功能或希望获得更好的用户体验,可以尝试一下其它图像查看器。此前,系统极客向大家推荐了 ...

    用户6543014
  • K8S 生态周报| 2019-04-15~2019-04-21

    > 「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。

    Jintao Zhang

扫码关注云+社区

领取腾讯云代金券