Pymongo使用Bson存储图片,读取显示mongodb数据库中保存的图片

Mongodb可以使用BSon格式来保存大小不超过16M的二进制文件,BSon是Binary JSON的简称,是一种类Json的一种二进制形式的存储格式

一、Pymongo使用Bson存储图片

假设目标图片如下请添加图片描述

url_="https://img1.baidu.com/it/u=1944362881,3052948923&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=500"

(一)要用到的库

pymongo是Python中用来操作MongoDB的一个库,需要用到Bson中的binary函数将图片转换为二进制数据流,所以两个库需要提前下载

pip install pymongo
pip install bson

另外还需要requests进行数据请求的库

(二)爬取图片

该图片获取方式为get请求方式,代码如下

import requests
url_="https://img1.baidu.com/it/u=1944362881,3052948923&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=500"
headers_1 = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
        "Referer":"https://image.baidu.com/"
    }
responses_ = requests.get(url_,headers_1)
data = responses_.content
#用content返回二进制数据
#此时也可以直接将图片保存到本地
out = open('E:/python/爬到的图片/test5.jpg', 'wb')
out.write(data)
out.close()
#保存路径自己决定
#保存文件的方式和以下效果是一样的
"""
with open('E:/python/爬到的图片/test5.jpg', 'wb') as f:
	f.write(data)
f.close()
"""

(三)保存到mongodb中

需要与数据库建立链接,并以Bson格式存入图片

from pymongo import MongoClient
from bson import binary
# 连接带有密码认证的Mongodb,格式如下:
# mongodb://用户名:密码@服务器地址/数据库名
sin = MongoClient('mongodb://username:password@192.168.1.102:8017/img')
# 使用名为img的数据库
db = sin['img']
# 使用名为baidu的集合
users = db['baidu']
# 先用字典存好Bson格式的图片数据
dict_ = {}
dict_["imagecontent"] = binary.Binary(data)
# 将要保存的字典放入列表中,通过列表的形式存入数据库
list_data = []
list_data.append(dict_)
users.insert_one(list_data)
print("保存成功!!!")

二、读取显示mongodb数据库中保存的图片

(一)读取mongodb中的图片数据

res= baidu.find()
# 读出来的res是一个列表,里面有一个图片数据的字典
data = res[0]['imagecontent']
# data为二进制图片数据

(二)读取到的数据保存到本地

按通用方法保存即可

with open('E:/python/爬到的图片/test5.jpg', 'wb') as f:
	f.write(data)

得到本地图片请添加图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值