replace 替换富文本编辑器中的 url 却匹配不到的问题

2018-12-06 15:28:22 +08:00
 chengxiao

因为微信的图片有防盗链机制,复制粘贴文章每次图片都要重新传,感觉很麻烦,就想覆写下 django admin 的 save_model 方法,打算把复制来的文章的图片存到本地,如下

    def save_model(self, request, obj, form, change):

        b = etree.HTML(obj.content)
        pics = b.xpath("//*/@src")
        for pic in pics:
            c = pic.split("&")[0].split("=")
            if c[1] == "jpeg" or c[1] == "png" or c[1] == "jpg":
                img_url = pic.split("&")[0]
                image_name = img_url.replace("https://","").split("/")[2]

                new_name = settings.MEDIA_ROOT+"/"+image_name+"."+c[1]
                file_name = settings.MEDIA_URL+image_name+"."+c[1]
                response = requests.get(img_url)
                image = Image.open(BytesIO(response.content))
                image.save(new_name)

                obj.content = obj.content.replace(str(pic),str(file_name))

                print(pic)

        super(NewsAdmin,self).save_model(request, obj, form, change)

问题就出现在这句

             obj.content = obj.content.replace(str(pic),str(file_name))

想要把 富文本编辑内的原图片 url 替换成 新生成的 url 原地址也是通过 xpath 取出来的 所以应该是没有问题的 但是 replace 就是一直匹配不到原 url 即使加了去掉换行符,依旧匹配不到

                  obj.content = obj.content.replace('\r','').replace('\n','').replace('\t','')

有点懵了,还请各位指点一下

1501 次点击
所在节点    Python
1 条回复
chengxiao
2018-12-06 15:54:32 +08:00
找到问题了.....原 url 中有很多&...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX