采集练习(四) 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)

            
原文地址:https://www.cnblogs.com/keygle/p/2950899.html