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 相关文章推荐
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
Python 静态方法和类方法实例分析
Nov 21 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
详解python日志输出使用配置文件格式
Feb 10 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 和 MySQL 基础教程(四)
2006/10/09 PHP
一个分页的论坛
2006/10/09 PHP
php xml 入门学习资料
2011/01/01 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
php简单图像创建入门实例
2015/06/10 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
开始着手第一个Django项目
2015/07/15 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
缓刑人员思想汇报
2014/10/11 职场文书
行政复议决定书
2015/06/24 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书