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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
python实现爬山算法的思路详解
Apr 09 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
python安装scipy的步骤解析
Sep 28 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
python学习将数据写入文件并保存方法
Jun 07 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
Python之字典添加元素的几种方法
Sep 30 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
jquery写出PC端轮播图实例
2018/01/26 jQuery
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
Python入门篇之函数
2014/10/20 Python
python实现telnet客户端的方法
2015/04/15 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
python中返回矩阵的行列方法
2018/04/04 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
简短大学毕业感言
2014/01/18 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
好的促销活动方案
2014/08/21 职场文书
详解Python类和对象内容
2021/06/22 Python
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫
python多次执行绘制条形图
2022/04/20 Python
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS
MySQL数据库查询之多表查询总结
2022/08/05 MySQL