批量下载豆瓣相册图片python脚本
2016-02-04 14:20
736 查看
豆瓣上有很多不错的图片,脚本用来批量下载一个相册的图片。
初学python,只是练练手,程序比较丑陋
初学python,只是练练手,程序比较丑陋
#encoding:utf8 import urllib,os,re,time import sys default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) class img(): def __init__(self,url): self.url=url self.getname() print self.name self.getnum() print self.num self.downloadimg() #相册的名称 def getname(self): wp = urllib.urlopen(self.url) content = wp.read() #获取页面内容 start=content.find('<title>') content=content[start+10:] end=content.find('</title>') content=content[:end].rstrip() self.name=content #相册一共有多少页图片 def getnum(self): wp = urllib.urlopen(self.url+'?start=0') content = wp.read() #获取页面内容 start=content.find("""data-total-page=\"""") content=content[start+17:] end=content.find('\">') content=content[:end] self.num=int(content) """ 选择某一个豆瓣相册,其中任意一张图片的的右上角有一个"返回相册" 点击"返回相册"到相册首页可以看到每一页都是18张图片,每一个翻页的网址为相册的地址加上?start=0,?start=18…… 这个函数实现相册首页翻页,并返回所有的翻页地址 """ def geturl(self): n = [x*18 for x in range(0, self.num)] url_list = [] for i in n: url =self.url+'?start=%s' % i url_list.append(url) return url_list def getimg(self): img_url = [] url = self.geturl() #print 'url:%s' %url for u in url: a = urllib.urlopen(u) for line in a.readlines(): if 'thumb' in line: img_url.append(line.strip()[10:-4].replace('thumb', 'photo')) return img_url def downloadimg(self): download_url = self.getimg() #print download_url outputfile='d:\\'+self.name.encode('gbk') if os.path.exists(outputfile)==False: os.makedirs(outputfile) print '============' for u in download_url: urllib.urlretrieve(u,outputfile+'/'+u.split('/')[-1]) time.sleep(5) #每下一张,休息5秒,防止被封 #print '%s\n' %u if __name__ == '__main__': try: url= 'http://www.douban.com/photos/album/67093521/'#相册地址 a=img(url) except Exception,e: print e
相关文章推荐
- python自定义排序函数
- install Python 3.3 on Ubuntu 12.04
- 一行代码的Python GUI弹框
- Python 命令行工具 -- click
- 【同行说技术】Python程序员小白变大神必读资料汇总(四)
- Python下OS模块重命名方法renames
- Python类的__getitem__和__setitem__特殊方法
- python查找指定目录下所有文件,以及改文件名的方法
- python 静态方法和类方法
- tkinter Menu
- Python元祖,列表,字典,集合的比较
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
- Python 用队列实现多线程并发
- python基础:day3作业
- python 基础2
- Python--wxpython
- python往mysql中插入datetime类型的数据
- Python-一张图
- python 对象拷贝, 值相同,同一对象的区别
- Python模拟登陆