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 字符串格式化代码
Mar 17 Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
Django实现全文检索的方法(支持中文)
May 14 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
如何用python写一个简单的词法分析器
Dec 18 Python
python random从集合中随机选择元素的方法
Jan 23 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
python语言线程标准库threading.local解读总结
Nov 10 Python
基于python实现对文件进行切分行
Apr 26 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 Python
python爬取豆瓣电影排行榜(requests)的示例代码
Feb 18 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
ThinkPHP缓存方法S()概述
2014/06/13 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
js实现文字滚动效果
2016/03/03 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
利用Python开发微信支付的注意事项
2016/08/19 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
python批量处理文件或文件夹
2020/07/28 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
pandas分批读取大数据集教程
2020/06/06 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
领导视察欢迎词
2014/01/15 职场文书
大学生个人事迹材料
2014/01/21 职场文书
职工小家建设活动方案
2014/08/25 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
数学教师个人工作总结
2015/02/06 职场文书
教学质量月活动总结
2015/05/11 职场文书
毕业实习单位意见
2015/06/04 职场文书
MySQL之DML语言
2021/04/05 MySQL
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis