使用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实现方便使用的级联进度信息实例
May 05 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python列表推导式与生成器用法分析
Aug 02 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
Python Selenium参数配置方法解析
Jan 19 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
python3.6使用SMTP协议发送邮件
May 20 Python
python程序的组织结构详解
Dec 06 Python
python实现双向链表原理
May 25 Python
使用scrapy实现增量式爬取方式
Jun 21 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访问数组最后一个元素的函数end()用法
2015/03/18 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
详解Vite的新体验
2021/02/22 Javascript
wxPython事件驱动实例详解
2014/09/28 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
python求最大连续子数组的和
2018/07/07 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
求职信结尾怎么写
2014/05/26 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
教育见习报告范文
2014/11/03 职场文书
员工年终考核评语
2014/12/31 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL