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脚本实现网卡流量监控
Feb 14 Python
Python操作CouchDB数据库简单示例
Mar 10 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
Python读写及备份oracle数据库操作示例
May 17 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Django给admin添加Action的步骤详解
May 01 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
zend framework多模块多布局配置
2011/02/26 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
javascript+mapbar实现地图定位
2010/04/09 Javascript
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
keras.layer.input()用法说明
2020/06/16 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
Python如何实现单例模式
2016/06/03 面试题
介绍下java.util.Arrays类
2012/10/16 面试题
会计顶岗实习心得
2014/01/25 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
协议书范文
2015/01/27 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers