采集练习(四) python 获得hao123导航图片分类下的美女图片
python实现前几天用php 实现的下载图片功能。
python 版本 2.73
部分代码来自 http://www.php10086.com/2013/01/1278.html
遇到的问题 :
1、采集执行到30页就出错,程序中断 (问题没解决) 我只好采30页;
2、 open 函数打开文件时候 'w' 模式 保存到本地的图片无法打开, 后来 使用 'wb'模式 问题得到解决;
3、 没有后缀的图片,默认加上 .jpg 后缀;
4、获得 json 数据必须 带上 User_Agent Referer 否则无法获得。
以下是代码 :
# -*- coding: utf-8 -*- import os,json, urllib2, time,socket socket.setdefaulttimeout(10) startTime = time.time() dir = 'D:\python\hao123pic\pic\\' if not os.path.isdir(dir): os.mkdir(dir) j = 1 i = 1 while i < 3: nums = int(time.time()) * 1000 url = 'http://pic.hao123.com/screen/meinv_meinv/'+str(i)+'?v=' + str(nums) + '&act=type' request = urllib2.Request(url) request.add_header('User-Agent', 'Mozilla/5.0') request.add_header('Referer', 'http://pic.hao123.com/meinv_meinv?style=xl') opener = urllib2.build_opener() data = opener.open(request).read() jsonData = json.loads(data) for n in jsonData: if n['picurl_orig']: req = urllib2.Request(n['picurl_orig']) imgData = urllib2.urlopen(req).read() imageName = dir + os.path.basename(n['picurl_orig']) ext = imageName.split('.') if len(ext)<2: imageName = imageName+'.jpg' file_object = open(imageName, 'wb') file_object.write(imgData) file_object.close() print('img %s_%s is ok' % (i, j)) j += 1 else: endTime = time.time() print(endTime - startTime) i += 1 endTime = time.time() print(endTime - startTime)