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 相关文章推荐
windows下python之mysqldb模块安装方法
Sep 07 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
python对象与json相互转换的方法
May 07 Python
Python中的asyncio代码详解
Jun 10 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
Python txt文件如何转换成字典
Nov 03 Python
Python Django搭建文件下载服务器的实现
May 10 Python
如何利用pygame实现打飞机小游戏
May 30 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
Python3生成手写体数字方法
2018/01/30 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
详解python算法之冒泡排序
2019/03/05 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
2013年大学生的自我鉴定
2013/10/24 职场文书
中医专业应届生求职信
2013/11/17 职场文书
五一劳动节慰问信
2015/02/14 职场文书
微信早安问候语
2015/11/10 职场文书
2016年党建工作简报
2015/11/26 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技