6

用Python将绝对URL替换成相对URL

 2 years ago
source link: https://www.linuxzen.com/yong-pythonjiang-jue-dui-urlti-huan-cheng-xiang-dui-url.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Home Menu

用Python将绝对URL替换成相对URL

Gray King | Sat 29 September 2012

公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的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   : [email protected]
#

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()

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK