python oss上傳圖片


1.阿里雲OSS

創建用於測試的Bucket
測試的Bucket名稱:test–space
讀寫權限根據自己需求(這里我設置的如下)

 

 

 

 

 

 

2. 獲取Access Key

可以在RAM訪問控制中創建一個用戶賦予只是對OSS管理的權限
RAM訪問控制:https://ram.console.aliyun.com/overview
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.腳本

from bs4 import BeautifulSoup
import pymysql, requests, time
import urllib.request
import oss
from io import BytesIO
from dateutil.parser import parse


# 獲取圖片地址
def get_img():
    global list_str
    list_str = []
    # 頭部信息
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'}
    # 請求的地址
    url1 = 'https://www.tianqi.com/wxyt/'
    result = requests.get(url1, headers=headers)
    soup = BeautifulSoup(result.text, "html.parser")
    targetCode = soup.select("#weixing_img option")
    # 循環拿選擇器的數據
    for i in targetCode:
        # 拿到日期(作為文件名)
        data_str = str(i.attrs.get("value")) + ".jpg"
        data = i.attrs.get("value")
        data_time = parse(data[:-5])
        urls = 'https://pi.weather.com.cn/i/product/pic/m/sevp_nsmc_wxcl_asc_e99_achn_lno_py_' + data_str
        f = urllib.request.urlopen(urls)
        res = f.read()
        bytes_stream = BytesIO(res)
        size = len(res) / 1e3
        if size <= 40:
            print('不合適{%s}:{%s}' % (data_str, size))
        else:
            oss.img(data_str, bytes_stream)
            conn = pymysql.connect(host=host, port=3306, db=db, user=user,passwd=passwd, charset='utf8')
            cursor = conn.cursor()
            # 拼接oss的圖片地址
            url = "https://文件名.oss-cn-shanghai.aliyuncs.com/" + data_str
            sql_insert = '''insert into img(str_time,url) value('%s','%s')''' % (str(data_time), url)
            # 提交sql語句,映射到數據庫中。
            print("insert ok!")
            # 刪除重復的數據
            sql_del = '''delete from img where id not in (
                                select t.max_id from
                                (select max(id) as max_id from img group by str_time,url) as t
                                )'''
            print("delete ok!")
            # 執行sql語句
            cursor.execute(sql_insert)
            cursor.execute(sql_del)
            conn.commit()
            # 關閉數據庫連接
            conn.close()


if __name__ == '__main__':
        get_img()
img

oss 配置

import oss2
def img(data_str, bytes_stream):
    # id與密鑰
    auth = oss2.Auth('賬號', '密鑰')
    # 域名(根據自己選的地區修改域名)
    endpoint = 'http://oss-cn-域名.aliyuncs.com'
    endpoint = 'http://oss-cn-shanghai.aliyuncs.com'
    # 文件名
    bucket = oss2.Bucket(auth, endpoint, '文件名')
    bucket.put_object(data_str, bytes_stream)
oss

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM