使用Python脚本将绝对url替换为相对url的教程


Posted in Python onApril 24, 2015

公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的URL(http://192.168.1.1:888/m/getimg?filename=xxx.jpg由于同时给手机终端提供接口,在手机终端会引起一些bug,改完代码后要求将以前的uri替换成相对的URL(/m/getimg?filename=xxx.jpg),由于图片是用img标签嵌入到内容同时用a标签括起显示大图的,所以需要读取数据库并对内容进行替换,

脚本内容如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#
#
# author : cold night
# email  : wh_linux@126.com
#

import pymongo
import re
from StringIO import StringIO

conn = pymongo.Connection()
db = conn.test

def replace_url():
  regex = re.compile(r'([href|src])=["|\']http://.*?(/m/getimg\?.*?)["|\']')
  results = db['test'].find()
  db_coll = db['test']
  def replace(r):
    content = r.get('content')
    if not content: return
    content = StringIO(content)
    content.seek(0)
    result = StringIO()
    for line in content.readlines():
      t = regex.sub(r'\1="\2"', line)
      result.write(t)

    result.seek(0)
    content = result.read()
    if content:
      r['content'] = content
    _id = r.get('_id')
    db_coll.update({'_id':_id}, r)

  results = [replace(i) for i in results]

if __name__=="__main__":replace_url()
Python 相关文章推荐
pygame播放音乐的方法
May 19 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
django+echart数据动态显示的例子
Aug 12 Python
Django REST Framework之频率限制的使用
Sep 29 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
python实现录音功能(可随时停止录音)
Oct 26 Python
解决python3中os.popen()出错的问题
Nov 19 Python
python中的getter与setter你了解吗
Mar 24 Python
Python3.x版本中新的字符串格式化方法
Apr 24 #Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 #Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
Apr 24 #Python
修改Python的pyxmpp2中的主循环使其提高性能
Apr 24 #Python
Python的Tornado框架异步编程入门实例
Apr 24 #Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
Apr 24 #Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 #Python
You might like
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
jQuery实现简单日历效果
2020/07/05 jQuery
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
详解python的四种内置数据结构
2019/03/19 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
Python和Bash结合在一起的方法
2020/11/13 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
计算机专业毕业生自我鉴定
2014/01/16 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
总经理岗位职责范本
2015/04/01 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
工资证明格式模板
2015/06/12 职场文书
婚礼父母致辞
2015/07/28 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
Python import模块的缓存问题解决方案
2021/06/02 Python
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
Oracle用户管理及赋权
2022/04/24 Oracle
windows系统搭建WEB服务器详细教程
2022/08/05 Servers
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers