使用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输出当前目录下index.html文件路径的方法
Apr 28 Python
Python标准库之collections包的使用教程
Apr 27 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
Python从文件中读取数据的方法讲解
Feb 14 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
python 字段拆分详解
Dec 17 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
浅谈Django前端后端值传递问题
Jul 15 Python
python3中确保枚举值代码分析
Dec 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获取301跳转URL简单实例
2013/12/16 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
python用post访问restful服务接口的方法
2018/12/07 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
奥巴马英文演讲稿
2014/05/15 职场文书
法人授权委托书
2014/09/16 职场文书
给老婆的保证书
2015/01/16 职场文书
校长师德表现自我评价
2015/03/05 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
Golang二维数组的使用方式
2021/05/28 Golang
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
Java字符串逆序方法详情
2022/03/21 Java/Android