使用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实现获取序列中最小的几个元素
Sep 25 Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
DataFrame 将某列数据转为数组的方法
Apr 13 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
pandas 透视表中文字段排序方法
Nov 16 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
python 统计文件中的字符串数目示例
Dec 24 Python
利用Python制作动态排名图的实现代码
Apr 09 Python
详细分析Python垃圾回收机制
Jul 01 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 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实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
DIV菜单层实现代码
2010/11/19 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
jQuery实现文本框邮箱输入自动补全效果
2015/11/17 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
react基本安装与测试示例
2020/04/27 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
Python简单实现enum功能的方法
2016/04/25 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
Python3计算三角形的面积代码
2017/12/18 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
优秀干部获奖感言
2014/01/31 职场文书
运动会班级口号
2014/06/09 职场文书
结婚保证书
2015/01/16 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript