使用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调用shell的方法
Nov 20 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
WxPython建立批量录入框窗口
Feb 27 Python
python简单验证码识别的实现方法
May 10 Python
python在不同条件下的输入与输出
Feb 13 Python
Python class的继承方法代码实例
Feb 14 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
Python图像读写方法对比
Nov 16 Python
Python实现机器学习算法的分类
Jun 03 Python
Python 第三方库 openpyxl 的安装过程
Dec 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php实现用户在线时间统计详解
2011/10/08 PHP
分享php分页的功能模块
2015/06/16 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
Python星号*与**用法分析
2018/02/02 Python
Python编程argparse入门浅析
2018/02/07 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
Python中实现输入一个整数的案例
2020/05/03 Python
scrapy-splash简单使用详解
2021/02/21 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
建筑工程自我鉴定
2013/10/18 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
公司周年庆典致辞
2015/07/30 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python