Python实现将绝对URL替换成相对URL的方法


Posted in Python onJune 28, 2015

本文实例讲述了Python实现将绝对URL替换成相对URL的方法。分享给大家供大家参考。具体分析如下:

一、问题:

公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的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 相关文章推荐
基于python的多进程共享变量正确打开方式
Apr 28 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
python openpyxl使用方法详解
Jul 18 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
python读取Excel表格文件的方法
Sep 02 Python
python将字母转化为数字实例方法
Oct 04 Python
pygame实现非图片按钮效果
Oct 29 Python
python画蝴蝶曲线图的实例
Nov 21 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
python3 re返回形式总结
Nov 20 Python
用Python可视化新冠疫情数据
Jan 18 Python
python实现将html表格转换成CSV文件的方法
Jun 28 #Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 #Python
python自动zip压缩目录的方法
Jun 28 #Python
python查找指定具有相同内容文件的方法
Jun 28 #Python
python中getaddrinfo()基本用法实例分析
Jun 28 #Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 #Python
分析用Python脚本关闭文件操作的机制
Jun 28 #Python
You might like
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
js日历功能对象
2012/01/12 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
什么是网络协议
2016/04/07 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
办理退休介绍信
2014/01/09 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python
Java无向树分析 实现最小高度树
2022/04/09 Javascript
Python实现双向链表基本操作
2022/05/25 Python
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技