使用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 相关文章推荐
win7 下搭建sublime的python开发环境的配置方法
Jun 18 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
使用python画社交网络图实例代码
Jul 10 Python
python找出因数与质因数的方法
Jul 25 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
如何通过python实现人脸识别验证
Jan 17 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
python如何对链表操作
Oct 10 Python
python生成word合同的实例方法
Jan 12 Python
Pytest之测试命名规则的使用
Apr 16 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php 设计模式之 单例模式
2008/12/19 PHP
Laravel5中contracts详解
2015/03/02 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
javascript生成大小写字母
2015/07/03 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
python妹子图简单爬虫实例
2015/07/07 Python
12步教你理解Python装饰器
2016/02/25 Python
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
银行柜员应聘推荐信范文
2013/11/24 职场文书
卫生巾广告词
2014/03/18 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL