使用Python脚本将绝对url替换为相对url的教程

793次阅读  |  发布于5年以前

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

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8