使用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 算法 排序实现快速排序
Jun 05 Python
跟老齐学Python之使用Python操作数据库(1)
Nov 25 Python
Python基本语法经典教程
Mar 11 Python
Python虚拟环境项目实例
Nov 20 Python
Python SQLite3简介
Feb 22 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
python TCP包注入方式
May 05 Python
Python如何测试stdout输出
Aug 10 Python
Python Matplotlib绘制条形图的全过程
Oct 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
ZF等常用php框架中存在的问题
2008/01/10 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
javascript工具库代码
2012/03/29 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
javascript几个易错点记录
2014/11/26 Javascript
js使用递归解析xml
2014/12/12 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
学习python (2)
2006/10/31 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
django如何通过类视图使用装饰器
2019/07/24 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
HTML5进度条特效
2014/12/18 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
卫校中专生个人自我评价
2013/09/19 职场文书
公关关系专员的自我评价分享
2013/11/20 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
作弊检讨书
2015/01/27 职场文书
西安导游词
2015/02/12 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS