使用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 相关文章推荐
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
Django发送html邮件的方法
May 26 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
Python中如何导入类示例详解
Apr 17 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
python socket 聊天室实例代码详解
Nov 14 Python
new_zeros() pytorch版本的转换方式
Feb 18 Python
python 装饰器的实际作用有哪些
Sep 07 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
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python ftp上传文件
2016/02/13 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
python 穷举指定长度的密码例子
2020/04/02 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
python3 简单实现组合设计模式
2020/07/02 Python
keras topN显示,自编写代码案例
2020/07/03 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
集团公司总经理岗位职责
2013/12/20 职场文书
大学毕业感言100字
2014/02/03 职场文书
2014年创卫工作总结
2014/11/24 职场文书
店铺转让协议书
2014/12/02 职场文书
聘任书格式及范文
2015/09/21 职场文书