Python利用requests模块下载图片实例代码


Posted in Python onAugust 12, 2019

本文主要介绍的是关于Python利用requests模块下载图片的相关,下面话不多说了,来一起看看详细的介绍吧

MySQL中事先保存好爬取到的图片链接地址。

然后使用多线程把图片下载到本地。

示例代码:

# coding: utf-8
import MySQLdb
import requests
import os
import re
from threading import Thread
import datetime

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
      'Chrome/63.0.3239.132 Safari/537.36'}
file_path = 'F:\\mlu2'
if not os.path.exists(file_path):
 os.mkdir(file_path)


class Spider(object):
 def __init__(self, file_path, header):
  self.file_path = file_path
  self.header = header

 @staticmethod
 def timer(func):
  def time_count(*args):
   start_time = datetime.datetime.now()
   func(*args)
   end_time = datetime.datetime.now()
   day = (end_time - start_time).days
   times = (end_time - start_time).seconds
   hour = times / 3600
   h = times % 3600
   minute = h / 60
   m = h % 60
   second = m
   print "爬取完成"
   print "一共用时%s天%s时%s分%s秒" % (day, hour, minute, second)
  return time_count

 def get_link(self):
  conn = MySQLdb.connect(host='localhost',
        port=3306,
        user='root',
        passwd='729814',
        db='mlu',
        charset='utf8')
  cur = conn.cursor()
  sql = 'select image from msg limit 100' # image为事先爬取存到MySQL的图片链接地址
  cur.execute(sql)
  img_link = cur.fetchall()
  return img_link

 def download(self, link):
  filename = re.findall(r'.*/(.+)', link)[0]
  try:
   pic = requests.get(link, headers=self.header)
   if pic.status_code == 200:
    with open(os.path.join(self.file_path)+os.sep+filename, 'wb') as fp:
     fp.write(pic.content)
     fp.close()
   print "下载完成"
  except Exception as e:
   print e

 @timer
 def run_main(self):
  threads = []
  links = self.get_link()
  for link in links:
   img = str(link[0])
   t = Thread(target=self.download, args=[img])
   t.start()
   threads.append(t)
  for t in threads:
   t.join()


spider = Spider(file_path, header)
spider.run_main()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python自动格式化json文件的方法
Mar 11 Python
Python 通过pip安装Django详细介绍
Apr 28 Python
基于Django contrib Comments 评论模块(详解)
Dec 08 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
python global和nonlocal用法解析
Feb 03 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
浅析python实现动态规划背包问题
Dec 31 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 Python
PyQt5实现多张图片显示并滚动
Jun 11 Python
django+tornado实现实时查看远程日志的方法
Aug 12 #Python
Django结合ajax进行页面实时更新的例子
Aug 12 #Python
django fernet fields字段加密实践详解
Aug 12 #Python
利用pyecharts实现地图可视化的例子
Aug 12 #Python
django echarts饼图数据动态加载的实例
Aug 12 #Python
python scrapy爬虫代码及填坑
Aug 12 #Python
Python 中的 global 标识对变量作用域的影响
Aug 12 #Python
You might like
重置版游戏视频
2020/04/09 魔兽争霸
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
js 控制页面跳转的5种方法
2013/09/09 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
python读写二进制文件的方法
2015/05/09 Python
python集合用法实例分析
2015/05/30 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
详解Python_shutil模块
2019/03/15 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis
在CSS中使用when/else的方法
2022/01/18 HTML / CSS