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用模块pytz来转换时区
Aug 19 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
numpy np.newaxis 的实用分享
Nov 30 Python
python连接mongodb集群方法详解
Feb 13 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python通过队列来实现进程间通信的示例
Oct 14 Python
python 用opencv实现霍夫线变换
Nov 27 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
实例讲解php数据访问
2016/05/09 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
canvas绘制七巧板
2017/02/03 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
vue实现树形菜单效果
2018/03/19 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
Python的Flask开发框架简单上手笔记
2015/11/16 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
详解python破解zip文件密码的方法
2020/01/13 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
煤矿班组长竞聘书
2014/03/31 职场文书
个人综合鉴定材料
2014/05/23 职场文书
2015年招生工作总结
2015/05/04 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书