使用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 相关文章推荐
Golang与python线程详解及简单实例
Apr 27 Python
python学习教程之Numpy和Pandas的使用
Sep 11 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
python for循环输入一个矩阵的实例
Nov 14 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
python实现简单的井字棋
May 26 Python
python中super()函数的理解与基本使用
Aug 30 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
短波收音机简介
2021/03/01 无线电
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
深入理解python try异常处理机制
2016/06/01 Python
python中cPickle类使用方法详解
2018/08/27 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
python实现顺时针打印矩阵
2019/03/02 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
入党积极分子介绍信
2014/01/17 职场文书
代办委托书怎样写
2014/04/08 职场文书
2014年内勤工作总结
2014/11/24 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
Python实现简单得递归下降Parser
2022/05/02 Python