单线程版-上传网络流

import pymysql
import oss2
import requests
import logging # 添加日志 logging.basicConfig(
level=logging.INFO, # 定义输出到文件的log级别,大于此级别的都被输出
format='%(asctime)s %(filename)s %(levelname)s : %(message)s', # 定义输出log的格式
datefmt='%Y-%m-%d %H:%M:%S', # 时间
filename='Error.log', # log文件名
filemode='a') # 写入模式“w”或“a” class osss(object): def __init__(self):
self.db = pymysql.connect(host='', port=3306, database='spider_yu', user='spider',
password='', charset='utf8')
# self.db = pymysql.connect(host='127.0.0.1', port=3306, database='shuo', user='root',
# password='root', charset='utf8')
self.cursor = self.db.cursor()
self.auth = oss2.Auth('LTAIjiyFNM8SukLq', 'fH83Q8o4JDMCpid7XxJSSDm4zPGxDW')
self.bucket = oss2.Bucket(self.auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yxb-dev')
self.numbre = 0
while True:
self.ssh_fun() def ssh_fun(self):
num = self.cursor.execute(
'select id, big, avatar from cqyy_product_info where id>{} limit 1000'.format(self.numbre))
if int(num) == int(0):
exit()
data_tuple = self.cursor.fetchall()
for data in data_tuple:
self.numbre = data[0]
big = data[1]
if "?" in big:
big = big.split('?')[0]
avatar = data[2]
if "?" in avatar:
avatar = avatar.split('?')[0]
# print('numbre:"{}", big:"{}", avatar:"{}"'.format(self.numbre, big, avatar))
logging.info('numbre:"{}", big:"{}", avatar:"{}"'.format(self.numbre, big, avatar))
try:
if ',' in big:
big = big.split(',')
big_list = []
for big_url in big:
if '/' in big_url:
big_name = big_url.split('/')[-1]
big_list.append(big_name)
num = self.cursor.execute('select id from cqyy_cqyy where url="{}"'.format(big_name))
if not num:
input = requests.get(big_url)
self.bucket.put_object('yxb-cqyy/drug_image/{}'.format(big_name), input)
self.cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(big_name))
self.db.commit() big_oss = ','.join(big_list)
self.cursor.execute(
'update cqyy_product_info set big_oss="{}" where id={}'.format(big_oss, self.numbre))
self.db.commit() else:
if '/' in big:
big_name = big.split('/')[-1]
self.cursor.execute(
'update cqyy_product_info set big_oss="{}" where id={}'.format(big_name, self.numbre))
self.db.commit()
num = self.cursor.execute('select id from cqyy_cqyy where url="{}"'.format(big_name))
if not num:
input = requests.get(big)
self.bucket.put_object('yxb-cqyy/drug_image/{}'.format(big_name), input)
self.cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(big_name))
self.db.commit() if ',' in avatar:
avatar = avatar.split(',')
avatar_list = []
for avatar_url in avatar:
if '/' in avatar_url:
avatar_name = avatar_url.split('/')[-1]
avatar_list.append(avatar_name)
num = self.cursor.execute('select id from cqyy_cqyy where url="{}"'.format(avatar_name))
if not num:
input = requests.get(avatar_url)
self.bucket.put_object('yxb-cqyy/head_portrait/{}'.format(avatar_name), input)
self.cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(avatar_name))
self.db.commit()
avatar_oss = ','.join(avatar_list)
self.cursor.execute(
'update cqyy_product_info set avatar_oss="{}" where id={}'.format(avatar_oss, self.numbre))
self.db.commit() else:
if '/' in avatar:
avatar_name = avatar.split('/')[-1]
self.cursor.execute(
'update cqyy_product_info set avatar_oss="{}" where id={}'.format(avatar_name,
self.numbre))
self.db.commit()
num = self.cursor.execute('select id from cqyy_cqyy where url="{}"'.format(avatar_name))
if not num:
input = requests.get(avatar)
self.bucket.put_object('yxb-cqyy/head_portrait/{}'.format(avatar_name), input)
self.cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(avatar_name))
self.db.commit()
except Exception as e:
# print('oss存入失败 id:"{}" 错误类型:"{}"'.format(self.numbre, e))
logging.info('oss存入失败 id:"{}" 错误类型:"{}"'.format(self.numbre, e)) if __name__ == '__main__':
osss = osss()

多线程版-上传网络流

import paramiko, threading
import queue
import pymysql
import oss2
import requests
import logging # 添加日志 logging.basicConfig(
level=logging.INFO, # 定义输出到文件的log级别,大于此级别的都被输出
format='%(asctime)s %(filename)s %(levelname)s : %(message)s', # 定义输出log的格式
datefmt='%Y-%m-%d %H:%M:%S', # 时间
filename='Error.log', # log文件名
filemode='a') # 写入模式“w”或“a” class ThreadPool(object):
def __init__(self, maxsize):
self.maxsize = maxsize
self._q = queue.Queue(self.maxsize)
for i in range(self.maxsize):
self._q.put(threading.Thread) def getThread(self):
return self._q.get() def addThread(self):
self._q.put(threading.Thread) dbs = pymysql.connect(host='', port=3306, database='spider_yu', user='spider',
password='', charset='utf8') def ssh_fun(numbre, big, avatar, pool, db, bucket):
print('numbre:"{}", big:"{}", avatar:"{}"'.format(numbre, big, avatar))
logging.info('numbre:"{}", big:"{}", avatar:"{}"'.format(numbre, big, avatar))
# dbs = pymysql.connect(host='127.0.0.1', port=3306, database='shuo', user='root',
# password='root', charset='utf8')
# dbs = pymysql.connect(host='115.238.111.198', port=3306, database='spider_yu', user='spider',
# password='Kangce@0608', charset='utf8')
cursor = dbs.cursor()
try:
if ',' in big:
big = big.split(',')
big_list = []
for big_url in big:
if '/' in big_url:
big_name = big_url.split('/')[-1]
big_list.append(big_name)
num = cursor.execute('select id from cqyy_cqyy where url="{}"'.format(big_name))
if not num:
# auth = oss2.Auth('LTAIjiyFNM8SukLq', 'fH83Q8o4JDMCpid7XxJSSDm4zPGxDW')
# bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yxb-dev')
input = requests.get(big_url)
bucket.put_object('yxb-cqyy/drug_image/{}'.format(big_name), input)
cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(big_name))
dbs.commit() big_oss = ','.join(big_list)
cursor.execute(
'update cqyy_product_info set big_oss="{}" where id={}'.format(big_oss, numbre))
dbs.commit() else:
if '/' in big:
big_name = big.split('/')[-1]
cursor.execute(
'update cqyy_product_info set big_oss="{}" where id={}'.format(big_name, numbre))
dbs.commit()
num = cursor.execute('select id from cqyy_cqyy where url="{}"'.format(big_name))
if not num:
# auth = oss2.Auth('LTAIjiyFNM8SukLq', 'fH83Q8o4JDMCpid7XxJSSDm4zPGxDW')
# bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yxb-dev')
input = requests.get(big)
bucket.put_object('yxb-cqyy/drug_image/{}'.format(big_name), input)
cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(big_name))
dbs.commit() if ',' in avatar:
avatar = avatar.split(',')
avatar_list = []
for avatar_url in avatar:
if '/' in avatar_url:
avatar_name = avatar_url.split('/')[-1]
avatar_list.append(avatar_name)
num = cursor.execute('select id from cqyy_cqyy where url="{}"'.format(avatar_name))
if not num:
# auth = oss2.Auth('LTAIjiyFNM8SukLq', 'fH83Q8o4JDMCpid7XxJSSDm4zPGxDW')
# bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yxb-dev')
input = requests.get(avatar_url)
bucket.put_object('yxb-cqyy/head_portrait/{}'.format(avatar_name), input)
cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(avatar_name))
dbs.commit()
avatar_oss = ','.join(avatar_list)
cursor.execute(
'update cqyy_product_info set avatar_oss="{}" where id={}'.format(avatar_oss, numbre))
dbs.commit() else:
if '/' in avatar:
avatar_name = avatar.split('/')[-1]
cursor.execute(
'update cqyy_product_info set avatar_oss="{}" where id={}'.format(avatar_name, numbre))
dbs.commit()
num = cursor.execute('select id from cqyy_cqyy where url="{}"'.format(avatar_name))
if not num:
# auth = oss2.Auth('LTAIjiyFNM8SukLq', 'fH83Q8o4JDMCpid7XxJSSDm4zPGxDW')
# bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yxb-dev')
input = requests.get(avatar)
bucket.put_object('yxb-cqyy/head_portrait/{}'.format(avatar_name), input)
cursor.execute(
'insert into cqyy_cqyy(url) values ("{}")'.format(avatar_name))
dbs.commit()
except Exception as e:
# print('oss存入失败 id:"{}" 错误类型:"{}"'.format(numbre, e))
logging.info('oss存入失败 id:"{}" 错误类型:"{}"'.format(numbre, e)) finally:
# dbs.close()
pool.addThread() if __name__ == '__main__':
t_list = []
pool = ThreadPool(3)
numbre = 0
# db = pymysql.connect(host='127.0.0.1', port=3306, database='shuo', user='root',
# password='root', charset='utf8')
db = pymysql.connect(host='', port=3306, database='spider_yu', user='spider',
password='', charset='utf8')
cursor = db.cursor()
auth = oss2.Auth('LTAIjiyFNM8SukLq', 'fH83Q8o4JDMCpid7XxJSSDm4zPGxDW')
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'yxb-dev')
while True:
num = cursor.execute('select id, big, avatar from cqyy_product_info where id>{} limit 1000'.format(numbre))
if int(num) == int(0):
exit()
data_tuple = cursor.fetchall()
for data in data_tuple:
numbre = data[0]
big = data[1]
if "?" in big:
big = big.split('?')[0]
avatar = data[2]
if "?" in avatar:
avatar = avatar.split('?')[0]
# if int(numbre) == int(20):
# exit()
th = pool.getThread()
t = th(target=ssh_fun, args=(numbre, big, avatar, pool, db, bucket))
t.start()
t_list.append(t)
for i in t_list:
i.join()
db.close()

  

阿里云oss存储图片的更多相关文章

  1. php将图片存储在阿里云oss存储上

    创建两个方法 1.上传方法 use OSS\OssClient; use think\Config; use OSS\Core\OssException; /** * 存储文件 * * @param ...

  2. 备份MySQL数据库并上传到阿里云OSS存储

    1. 环境配置 要将本地文件上传到阿里云oss中, 必须使用阿里云提供的工具 ossutil, 有32位,也有64位的, Linux和Windows都有.具体可以到阿里云官网下载 官网及文档: htt ...

  3. 前端(react)上传到阿里云OSS存储 实例

    需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...

  4. 谷粒 | 10 | 阿里云OSS存储对象服务

    阿里云OSS对象存储服务 准备工作 1.在service模块新建子模块service_oss 2.引入pom.xml文件中引入oss服务依赖 <dependencies> <!--a ...

  5. Laravel 使用阿里云 oss 存储对象

    一.下载安装 composer require jacobcyl/ali-oss-storage 二.注册服务提供者 在config/app.php的providers下添加: //阿里云OSS对象存 ...

  6. 阿里云OSS存储开发(一)

    Step 1. 初始化一个OSSClient OSSClient是与OSS服务交互的客户端,SDK的OSS操作都是通过OSSClient完成的. 下面代码新建了一个OSSClient: using A ...

  7. 阿里云OSS存储

    1.accessKeyId 与 accessKeySecret 是由系统分配给用户的,称为ID对,用于标识用户,为访问OSS做签名验证. 2.Bucket是OSS上的命名空间,相当于数据的容器,可以存 ...

  8. Java项目接入阿里云OSS存储

    需求背景 目前公司内部项目所支持的文件云存储方式还是公司内部项目组提供的方案,但在时间的考验之下,弊端显现,尤其是灾备切换过程中需要切换访问地址,这种操作不方便,更可能因为中间过程的失误导致资源不可用 ...

  9. 阿里云OSS存储前端API上传(签名上传)

    一.创建用户 在阿里云创建用户https://ram.console.aliyun.com/users,并勾选Open API 保存好信息,很重要,返回后就再也找不到了 新增授权(这里视个人情况,需要 ...

随机推荐

  1. selenuim和phantonJs处理网页动态加载数据的爬取

    一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 -* ...

  2. The Kernel Boot Process.内核引导过程

    原文标题:The Kernel Boot Process 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下.一来自己 ...

  3. 7 家 IT 厂商 6394.5 万元中标天津公安云项目(虚拟化、数据库、软件开发)

    http://mp.weixin.qq.com/s/kjum54HJorGTPtZiM-HE1g 天津市公安局云计算平台项目分为:大数据部分.虚拟化部分.数据库部分,软件开发部分,预算分别为:2350 ...

  4. Solr进阶之Solr综合文本相似度的多因素权重排序实现

    现在有个需求是这样子的:需要计算搜索词的权重设置其为总排序权重的0.6,其他因素的权重为0.4其他因素中还有详细的划分.这里我们用Solr如何来实现?众所周知solr默认的排序方式为按照文本相似度来进 ...

  5. 编码,基本数据类型,str索引和切片,for循环

    1. 编码 1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$% 128个码位 2**7 在此基础上加了一位 2**8 8位 ...

  6. vue2.0自定义指令

    前面一片文章说了vue2.0过滤器,其实自定义指令跟过滤器非常相似,单就定义方式而言,其与过滤器完全一致,分为局部指令,和全局指令.不过就是filter改为directive的区别. 过滤器一般用于对 ...

  7. 安全测试1_Web知识简介

    接下去所有的安全测试都是本人学习安全测试的过程,随笔中会截取云课堂视频中的图片(比较生动和形象,便于理解),主要目的是方便自己以后复习和巩固! 1.Web发展阶段概述: 2.web安全我能提发展形势: ...

  8. .Net MVC 身份验证

    .Net身份验证主要是分为三种 Windows | Forms | Passport ,其中Froms在项目中用的最多. Windows 身份验证 Forms 验证 Passport 验证 1.Win ...

  9. C# 反射常见用法

    定义: 反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类.结构.委托.接口和枚举等)的成员和成员的信息.有了反射,即可对每一个类型了如指掌.另外我还可以直接创建对 ...

  10. 二级VB备考中

    今天安装了一个VB软件,二级备考中,每天一套牌卷子. 在Html5中 align 与valign改变了属性 vertial-align  是垂直方向的改变 面对网站首页的建立需要首先画好一份区域设计图 ...