Python实现批量下载图片的方法


Posted in Python onJuly 08, 2015

本文实例讲述了Python实现批量下载图片的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/env python
#-*-coding:utf-8-*-'
#Filename:download_file.py
import os,sys
import re
import urllib
import urllib2
base_url = 'xxx'
array_url = list()
pic_url = list()
inner_url = list()
def get_array_url(array_url,base_url):
  content = urllib.urlopen(base_url).read()
  array_url_a = re.findall(r'/rihan.*?.html',content)
  for url in array_url_a:
    url_a = 'xxx'+url
    #print url_a
    array_url.append(url_a)
def get_inner_url(array_url,inner_url):
  inner_url.append(array_url)
  content = urllib.urlopen(array_url[10]).read()
  content = content.replace(" ","")
  url_a = re.findall(r'<li>.*?</li>',content)
  for i in url_a:
    url = re.findall(r'ahref=\\'.*?.html\\'target',i)
    if len(url)>0:
      # print url[0]
      url_b = re.sub(r'ahref=\\'','',url[0])
      # print url_b
      url_c = re.sub(r'\\'target','',url_b)
      url_c = 'http://xxx/'+re.sub(r'/.*/','',url_c)
      inner_url.append(url_c)
  del inner_url[1]
  # print inner_url
def get_pic_url(pic_url,inner_url,array_url):
  content = urllib.urlopen(array_url).read()
  pic_url_a = re.findall(r'center.*?.jpg',content)
  print 'bbbbbbbbb',len(pic_url_a)
  pic_url_a = re.findall(r'http://.*.jpg',pic_url_a[0])
  pic_url.append(pic_url_a[0])
  j=2
  for i in inner_url:
    jj = '/'+str(j)+'.jpg'
    pic = re.sub(r'/1.jpg',jj,pic_url_a[0])
    pic_url.append(pic)
    j = j+1
  del pic_url[-1]
  for i in pic_url:
    print i
def urlcallback(a,b,c):
  """
    call back function
    a,已下载的数据块
    b,数据块的大小
    c,远程文件的大小
  """
  print "callback"
  prec=100.0*a*b/c
  if 100 < prec:
    prec=100
  print "%.2f%%"%(prec,)
def download(img_url,file_num):
    for img in img_url:
      print img
      img_name = re.sub(r'http://.*/','',img)
      path = 'C:/'+str(file_num)+'/'+img_name
      urllib.urlretrieve(img,path,urlcallback)
get_array_url(array_url,base_url)
file_num = 3
#download(pic_url,file_num)
get_inner_url(url,inner_url)
get_pic_url(pic_url,inner_url,url)
'''
for url in array_url:
  print url
  # get_inner_url(url,inner_url)
 # get_pic_url(pic_url,inner_url)
  get_inner_url(url,inner_url)
  get_pic_url(pic_url,inner_url,url)
  download(pic_url,file_num)
  file_num = file_num+1
  del inner_url[:]
  del pic_url[:]
'''

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
Python封装原理与实现方法详解
Aug 28 Python
Python实现二维曲线拟合的方法
Dec 29 Python
Python实现Event回调机制的方法
Feb 13 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
python中有帮助函数吗
Jun 19 Python
Python中的tkinter库简单案例详解
Jan 22 Python
python数据结构之图的实现方法
Jul 08 #Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 #Python
python中偏函数partial用法实例分析
Jul 08 #Python
Python使用bs4获取58同城城市分类的方法
Jul 08 #Python
Python实现批量修改文件名实例
Jul 08 #Python
Python查询阿里巴巴关键字排名的方法
Jul 08 #Python
浅谈Python中的闭包
Jul 08 #Python
You might like
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
twig模板常用语句实例小结
2016/02/04 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
JavaScript字符串对象
2017/01/14 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
python中set常用操作汇总
2016/06/30 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
python opencv读mp4视频的实例
2018/12/07 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
安装PyInstaller失败问题解决
2019/12/14 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
共产党员承诺书
2014/03/25 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
检察院起诉书
2015/05/20 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
安全生产感想
2015/08/07 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
Golang连接并操作MySQL
2022/04/14 MySQL
Redis基本数据类型Set常用操作命令
2022/06/01 Redis
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android