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之永远强大的函数
Sep 14 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
python 判断网络连通的实现方法
Apr 22 Python
python制作图片缩略图
Apr 30 Python
画pytorch模型图,以及参数计算的方法
Aug 17 Python
Python实现生成密码字典的方法示例
Sep 02 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
如何教少儿学习Python编程
Jul 10 Python
Python控制鼠标键盘代码实例
Dec 08 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
3种平台下安装php4经验点滴
2006/10/09 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
python发送HTTP请求的方法小结
2015/07/08 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
PHP如何调用MYSQL存储过程
2014/05/30 面试题
办理退休介绍信
2014/01/09 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
《乌塔》教学反思
2014/02/17 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
5.12护士节活动总结
2015/02/10 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
甲午风云观后感
2015/06/02 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
教师节晚会主持词
2015/06/30 职场文书
经典祝酒词大全
2015/08/12 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL
JavaScript实现音乐播放器
2022/08/14 Javascript