使用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语句、函数与方法的使用技巧总结
Dec 08 Python
深入讲解Java编程中类的生命周期
Feb 05 Python
利用python获取Ping结果示例代码
Jul 06 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
Python中一些深不见底的“坑”
Jun 12 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 Python
python实现人工智能Ai抠图功能
Sep 05 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
python代码如何注释
Jun 01 Python
OpenCV读取与写入图片的实现
Oct 13 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跨域cookie共享使用方法
2014/02/20 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
对dataframe数据之间求补集的实例详解
2019/01/30 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
耐克美国官网:Nike.com
2016/08/01 全球购物
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
来自世界各地的优质葡萄酒:VineShop24
2018/07/09 全球购物
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
考试没考好检讨书
2014/01/31 职场文书
美术教师个人总结
2015/02/06 职场文书
城南旧事观后感
2015/06/11 职场文书
经营场所证明范本
2015/06/19 职场文书
师范生教育见习总结
2015/06/23 职场文书
婚礼迎宾词大全
2015/08/10 职场文书