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实现ftp客户端示例分享
Feb 17 Python
Python下singleton模式的实现方法
Jul 16 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
解读python如何实现决策树算法
Oct 11 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
python制作微博图片爬取工具
Jan 16 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
python使用glob检索文件的操作
May 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
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
JS获取后台Cookies值的小例子
2013/03/04 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
Python 创建守护进程的示例
2020/09/29 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
nohup的用法
2014/08/10 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
安全生产责任书
2014/03/12 职场文书
中药专业自荐信范文
2014/03/18 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
自荐信格式模板
2015/03/27 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏