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在校内发人人网状态(人人网看状态)
Feb 19 Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
Python的Flask框架中web表单的教程
Apr 20 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
Python 最强编辑器详细使用指南(PyCharm )
Sep 16 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
python实现逢七拍腿小游戏的思路详解
May 26 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 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制作静态网站的模板框架
2006/10/09 PHP
PHP循环获取GET和POST值的代码
2008/04/09 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
php创建无限级树型菜单
2015/11/05 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现端口复用实例代码
2014/07/03 Python
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
Python解析微信dat文件的方法
2020/11/30 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
性能服装:HYLETE
2018/08/14 全球购物
大专生的学习自我评价
2013/12/04 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
学习保证书怎么写
2015/02/26 职场文书
保安辞职信范文
2015/02/28 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL