使用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中数字以及算数运算符的相关使用
Oct 12 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
Flask框架模板继承实现方法分析
Jul 31 Python
python编写计算器功能
Oct 25 Python
Django实现基于类的分页功能
Oct 31 Python
python实现滑雪者小游戏
Feb 22 Python
python3 使用traceback定位异常实例
Mar 09 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
基于Python的自媒体小助手---登录页面的实现代码
Jun 29 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python简单连接MongoDB数据库的方法
2016/03/15 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
Python库安装速度过慢解决方案
2020/07/14 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
计算机相关的自我评价
2014/01/15 职场文书
物理力学求职信
2014/02/18 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis