使用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分割和拼接字符串
Nov 01 Python
python编程实现归并排序
Apr 14 Python
Python中标准模块importlib详解
Apr 16 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
Python面向对象之继承代码详解
Jan 29 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
pytorch使用Variable实现线性回归
May 21 Python
django解决订单并发问题【推荐】
Jul 31 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
Python的垃圾回收机制详解
Aug 28 Python
Python连接Mysql进行增删改查的示例代码
Aug 03 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
Python sys.path详细介绍
2013/10/17 Python
Python常用知识点汇总
2016/05/08 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python实现AES加密解密
2019/03/28 Python
关于Python作用域自学总结
2019/06/10 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
法学专业自我鉴定
2014/02/05 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
具结保证书
2015/01/17 职场文书
龙门石窟导游词
2015/02/02 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
redis中lua脚本使用教程
2021/11/01 Redis
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS